Confirmando una dirección de correo electrónico con un enlace

4

Durante un proceso de incorporación, quiero confirmar la dirección de correo electrónico de un usuario enviándole un enlace en forma de una URL seguida de un GUID como parámetro: www.somedomain.com?p=GUID

¿Qué tipo de riesgo de seguridad hay al hacerlo? Tenga en cuenta que también estoy validando el número de teléfono móvil del usuario con SMS.

    
pregunta frenchie 08.06.2016 - 15:20
fuente

2 respuestas

2

Esto lo dice mejor que yo:

  

el propósito de un GUID es ser globalmente único, no ser indiscutible.

y

  

Los GUID están diseñados para ser únicos, no para seguridad.

Por lo tanto, si le preocupa que un atacante pueda validar una dirección de correo electrónico que no sea la suya, entonces no use un GUID.

Dado que es una cosa simple de resolver, en lugar de eso, genere un token de 128 bits utilizando un CSPRNG.

También use HTTPS para asegurarse de que el parámetro esté cifrado durante el tránsito. Debe verificar si la sesión coincide con el original o pedirles que inicien sesión nuevamente después de seguir el enlace en caso de que algún producto de seguridad decida seguir el enlace para escanear antes de que llegue al usuario (de lo contrario, podrían confirmar las direcciones de correo electrónico de los usuarios que nunca registrado).

También debe redireccionar a través de HTTP y almacenar el valor dentro de su sesión mientras espera que confirmen, para protegerse contra la fuga del remitente; de lo contrario, cualquier recurso en su página de otro dominio recibirá su token dentro del HTTP de referencia. encabezado de solicitud.

    
respondido por el SilverlightFox 09.06.2016 - 13:22
fuente
0

Hay poco riesgo de seguridad en el uso del método que describió para confirmar una dirección de correo electrónico de nuevas cuentas, pero eso se debe a que hay poco riesgo de seguridad en general si se valida una dirección de correo electrónico no válida. Incluso si usó un ID mucho más fácil de adivinar que los GUID, no demasiado puede ir mal (desde el punto de vista de la seguridad) si alguien lo controla y se registra con una dirección de correo electrónico falsa o con la dirección de correo electrónico de otra persona.

Dicho esto, no creo que esa sea la esencia de tu pregunta. Como lo mencionó Anders en su comentario, ¿se puede acceder a información confidencial si alguien pudiera adivinar un GUID con éxito? Probablemente no para la creación de la cuenta, pero si usa el mismo tipo de URL para restablecer la contraseña, entonces tenemos más de qué hablar desde un punto de vista de seguridad, ya que entonces podemos evaluar la seguridad del GUID en sí.

Los GUID, como su nombre indica, son únicos a nivel mundial y, por lo tanto, no tienes que preocuparte por las colisiones. También son de 128 bits lo que los hace difíciles de predecir. (Tenga en cuenta que algunos de los bits están reservados, por lo que no tiene 128 bits de entropía). Dicho esto, generalmente no son no imposibles para predecir, ya que generalmente se generan en base a marca de tiempo particular Si se conoce (o se determina de alguna manera) esa marca de tiempo, es posible vencer con el equipo moderno la cantidad de intentos necesarios para atacar con éxito la fuerza bruta y encontrar un GUID válido en uso. Esto puede mitigarse mediante el uso de GUID de caducidad de corta duración para acciones sensibles, como el restablecimiento de contraseñas, pero si está tratando con información de alta seguridad contenida en una cuenta de usuario, es probable que sea mejor que use GUID, como criptográficamente. cadena segura generada aleatoriamente.

    
respondido por el TTT 08.06.2016 - 18:51
fuente

Lea otras preguntas en las etiquetas