La validazione e-mail è davvero necessaria?

3

Sto lavorando su uno dei miei progetti in cui gli utenti non devono registrarsi o accedere per pubblicare un annuncio, ma devono fornire un indirizzo email in modo che un link di conferma possa essere inviato all'indirizzo fornito per ulteriori azioni.

Stavo leggendo quanto sia scarsa la validazione dell'e-mail e che le e-mail non valide possano ancora passare attraverso la maggior parte delle funzionalità di verifica. Ma cosa può andare storto se l'e-mail dell'utente non è valida? Se l'indirizzo email dell'utente è // bob "the+powerfull/@mail.com e restituisce come email valida attraverso il validatore, cosa succederà?

Perché una semplice convalida non è sufficiente? Se non memorizzo le e-mail in un DB e sto solo inviando una e-mail di conferma? Non posso semplicemente usare preg_match o filter_var ? Se l'utente utilizza un messaggio di posta elettronica come ho già detto, vuoi che anche gli utenti di questo tipo visitino la tua pagina?

    
posta StuckBetweenTrees 25.01.2015 - 01:59
fonte

4 risposte

4

Non è necessaria una convalida eccessiva.

Un indirizzo e-mail non valido è solo un indirizzo e-mail non valido e qualsiasi software SMTP decente può gestirlo. Infatti, se stai utilizzando una libreria come PHPMailer (che dovresti), controllerà l'indirizzo prima che lo trasmetta addirittura al servizio SMTP effettivo.

Naturalmente si potrebbe arrivare a uno scenario in cui un backend completamente spezzato in qualche modo soffoca su indirizzi non validi. Ma poi potrebbe soffocare anche indirizzi validi appositamente predisposti. Preferiresti invece aggiustare il backend e poi cercare di aggirare il problema sul frontend.

Certo, la convalida di base ha senso, perché fornisce la difesa in profondità, aumenta l'usabilità e riduce la quantità di lavoro non necessario. Ma andare oltre il filter_var() non è necessario. A proposito, non sono a conoscenza di bug in questa funzione. È più restrittivo del necessario (ad esempio, i commenti non sono consentiti), ma in effetti dovrebbe catturare tutti gli indirizzi non validi.

    
risposta data 25.01.2015 - 06:56
fonte
4

"Non esiste una semplice espressione regolare per questo problema: vedere questa espressione regolare completamente conforme a RFC-822, che è tutt'altro che semplice. (È stata scritta prima dei giorni dei modelli grammaticali.) Anche la grammatica specificata in RFC 5322 complicato per le espressioni regolari primitive. "

link

Una regex valida per analizzare gli indirizzi e-mail secondo RFC5322 è lunga 6169 caratteri.

La regex che raccomando per il tuo caso è /.@./ (almeno un carattere prima e uno dopo un segno @). La convalida della posta elettronica non è necessaria e non è consigliata. Quello che puoi fare è ricordare all'utente che usa i cookie e dare loro la possibilità di cambiare l'indirizzo email che hanno fornito.

    
risposta data 25.01.2015 - 19:06
fonte
0

Come risposta generale:

Sembra che senza garantire un'e-mail valida, un utente potrebbe perdere tempo nell'attesa di un'email di convalida che non arriva.

Garantire la precisione dell'input ridurrà al minimo la frustrazione complessiva dell'utente, portando potenzialmente a utenti ripetuti.

    
risposta data 25.01.2015 - 04:50
fonte
0

Why is a simple validation not enough?

Non è chiaro dalla tua domanda che cosa consideri una semplice convalida.

Un indirizzo email (o più correttamente un ADDR_SPEC) può essere conforme alla regex segnalato da @ f.ardelian e la posta sarà ancora non consegnabile

Un indirizzo email può avere un dominio con un record MX valido e ancora non essere consegnato.

E l'indirizzo e-mail può fare riferimento a una casella di posta valida su un server valido e non essere ancora recapitato.

Ma inviando ciecamente un'email di conferma all'indirizzo fornito, l'utente ha molti problemi:

  • c'è una disconnessione tra l'inserimento dei dati e la convalida - nessun feedback immediato per gli utenti significa che ti danno la colpa quando il loro annuncio non viene pubblicato

  • c'è spazio per DOS contro il tuo servizio e caselle di posta specifiche abusando del servizio

risposta data 04.07.2018 - 12:34
fonte

Leggi altre domande sui tag