Commit 33bb372
fix: tighten email validation rules (#2304)
The goal here is to limit the conditions which resolver implementations
can affect the determinism of our DNS checks, without allowing transient
DNS failures to block signups:
* Reject single label email domains (`a@a`, `a@gmail`)
* Use absolute FQDN for DNS lookups to avoid implicit search behavior
* Preserves the RFC 5321 fallback, but narrows when it is called
* Add an allow list for major email providers to lower latency
* Reject mutated display name address that the mail parser might accept
* Add test coverage for some corner cases
Co-authored-by: Chris Stockton <chris.stockton@supabase.io>1 parent e8f679b commit 33bb372
2 files changed
Lines changed: 128 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| 59 | + | |
59 | 60 | | |
60 | 61 | | |
61 | 62 | | |
62 | 63 | | |
63 | 64 | | |
64 | 65 | | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
65 | 104 | | |
66 | 105 | | |
67 | 106 | | |
| |||
222 | 261 | | |
223 | 262 | | |
224 | 263 | | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
225 | 270 | | |
226 | 271 | | |
227 | 272 | | |
| |||
291 | 336 | | |
292 | 337 | | |
293 | 338 | | |
| 339 | + | |
294 | 340 | | |
295 | 341 | | |
296 | 342 | | |
297 | 343 | | |
298 | 344 | | |
299 | | - | |
300 | | - | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
301 | 349 | | |
302 | 350 | | |
303 | 351 | | |
| |||
320 | 368 | | |
321 | 369 | | |
322 | 370 | | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
323 | 375 | | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
324 | 394 | | |
325 | 395 | | |
326 | 396 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
| |||
201 | 202 | | |
202 | 203 | | |
203 | 204 | | |
204 | | - | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
205 | 209 | | |
206 | 210 | | |
207 | 211 | | |
| |||
210 | 214 | | |
211 | 215 | | |
212 | 216 | | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
213 | 236 | | |
214 | 237 | | |
215 | 238 | | |
| |||
235 | 258 | | |
236 | 259 | | |
237 | 260 | | |
238 | | - | |
239 | 261 | | |
240 | 262 | | |
241 | 263 | | |
242 | 264 | | |
243 | 265 | | |
244 | | - | |
245 | | - | |
246 | | - | |
247 | | - | |
248 | 266 | | |
249 | 267 | | |
250 | 268 | | |
251 | 269 | | |
252 | 270 | | |
253 | 271 | | |
254 | | - | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
255 | 278 | | |
256 | 279 | | |
257 | 280 | | |
| |||
268 | 291 | | |
269 | 292 | | |
270 | 293 | | |
| 294 | + | |
271 | 295 | | |
272 | 296 | | |
273 | 297 | | |
| |||
277 | 301 | | |
278 | 302 | | |
279 | 303 | | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
280 | 309 | | |
281 | 310 | | |
282 | 311 | | |
| |||
294 | 323 | | |
295 | 324 | | |
296 | 325 | | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
297 | 346 | | |
0 commit comments