¿Es realmente necesaria la validación de correo electrónico fuerte?

2

Estoy trabajando en uno de mis proyectos donde los usuarios no necesitan registrarse o iniciar sesión para publicar un anuncio, pero tienen que proporcionar una dirección de correo electrónico para que se pueda enviar un enlace de confirmación a la dirección provista para otras acciones.

Estaba leyendo que la validación deficiente del correo electrónico es inútil y que los correos electrónicos no válidos aún pueden pasar por la mayoría de las funciones de verificación. Pero, ¿qué puede salir mal si el correo electrónico del usuario no es válido? Si la dirección de correo electrónico del usuario es //bob"the+powerfull/@mail.com y esto se devuelve como un correo electrónico válido a través del validador, ¿qué va a pasar?

¿Por qué una simple validación no es suficiente? ¿Si no almaceno los correos electrónicos en una base de datos y estoy enviando una confirmación por correo electrónico? ¿No puedo usar preg_match o filter_var ? Si el usuario utiliza un correo electrónico como el que ya mencioné, ¿quieres que los usuarios así visiten tu página?

    
pregunta StuckBetweenTrees 25.01.2015 - 01:59
fuente

4 respuestas

4

No hay necesidad de validación excesiva.

Una dirección de correo electrónico no válida es simplemente una dirección de correo electrónico no válida, y cualquier software SMTP decente puede manejar esto. De hecho, si está utilizando una biblioteca como PHPMailer (que debería), comprobará la dirección antes de que la transfiera al servicio SMTP real.

Por supuesto, uno podría llegar a un escenario en el que un backend completamente roto se atragante con las direcciones no válidas. Pero entonces también puede ahogarse con direcciones válidas especialmente diseñadas. Prefieres arreglar el backend y luego tratar de solucionar el problema en el frontend.

Claro, la validación básica tiene sentido, ya que proporciona defensa en profundidad, aumenta la facilidad de uso y reduce la cantidad de trabajo innecesario. Pero ir más allá de filter_var() no es necesario. Por cierto, no tengo conocimiento de ningún error en esta función. Es más restrictivo de lo requerido (por ejemplo, no se permiten los comentarios), pero de hecho debería capturar todas las direcciones no válidas.

    
respondido por el Fleche 25.01.2015 - 06:56
fuente
3

"No hay una expresión regular simple para este problema: vea esta expresión regular totalmente compatible con RFC-822, que es todo menos simple. (Fue escrito antes de los días de los patrones gramaticales.) La gramática especificada en RFC 5322 también es Complicado para expresiones regulares primitivas ".

enlace

Una expresión regular válida para analizar las direcciones de correo electrónico según RFC5322 tiene 6169 caracteres.

La expresión regular que recomiendo para su caso es /.@./ (al menos un carácter antes y otro después de un signo @). La validación fuerte del correo electrónico no es necesaria y no se recomienda. Lo que puede hacer es recordar al usuario que utiliza cookies y darles la opción de cambiar la dirección de correo electrónico que proporcionaron.

    
respondido por el f.ardelian 25.01.2015 - 19:06
fuente
0

Como respuesta general:

Parece que sin garantizar un correo electrónico válido, un usuario podría perder el tiempo esperando un correo electrónico de validación que no llega.

Asegurar la precisión de la entrada minimizará la frustración general del usuario, lo que podría llevar a usuarios repetidos.

    
respondido por el Ramrod 25.01.2015 - 04:50
fuente
0
  

¿Por qué una simple validación no es suficiente?

No está claro de tu pregunta lo que consideras validación simple.

Una dirección de correo electrónico (o, más correctamente, un ADDR_SPEC) puede ajustarse a la expresión regular indicada por @ f.ardelian y el correo seguirá sin poder entregarse

Una dirección de correo electrónico puede tener un dominio que tiene un registro MX válido y aún no se puede entregar.

Y la dirección de correo electrónico puede hacer referencia a un buzón válido en un servidor válido y seguir sin poder entregarse.

Pero solo enviando ciegamente un correo electrónico de confirmación a la dirección provista, el usuario tiene muchos problemas:

  • hay una desconexión entre la entrada de datos y la validación, sin comentarios inmediatos para los usuarios significa que te culpan cuando su anuncio no se publica

  • existe un margen para DOS contra su servicio y buzones específicos al abusar del servicio

respondido por el symcbean 04.07.2018 - 12:34
fuente

Lea otras preguntas en las etiquetas