Uso de identificadores en URL para autenticar usuarios

4

Alguien que conozco está registrado en un sitio web de la comunidad donde pueden intercambiar mensajes, etc. Mirando la notificación por correo electrónico que reciben cuando se ha publicado algo nuevo, contiene una imagen con un enlace a su sitio web, como por ejemplo:

http://**********.org/****/id/abcdef0123456789abcdef0123456789

Donde la última parte parece ser una especie de hash único del usuario , que al seguir ese enlace lo lleva directamente al sitio web bajo la cuenta de usuario, no autenticación requerida!

Un poco desconcertado, hice la prueba y la probé copiando el enlace y usándolo en un sistema diferente en el que nunca antes se había accedido a ese sitio web y con la seguridad de que solo podía acceder a la cuenta de usuario sin una cuenta. enganche.

Al observar las cookies almacenadas para este sitio web, una es PHPSESSID cuyo valor no coincide con el ID de la URL, por lo que claramente el elemento hash debe referirse a una cuenta de usuario en el servidor, omitiendo todo tipo de autenticación.

No soy un experto en tecnología web, pero por curiosidad, ¿a qué tipo de autenticación se llama? ¿Es una forma popular de usuario de registro? Esto, para mí, no parece seguro en absoluto (es decir, una red de rastreo puede revelar esta información de inmediato).

    
pregunta fduff 23.12.2015 - 11:12
fuente

2 respuestas

4

Si realmente puedes realizar acciones como el otro usuario, se llama "autenticación realmente mala". Si solo lo lleva a su página de perfil, es solo un enlace; algunos sistemas permitirán las vistas de perfil incluso para usuarios no registrados que tienen el enlace apropiado, incluso si normalmente está restringido para usuarios registrados.

De cualquier manera, tenga cuidado al experimentar de esta manera; seguir un enlace probablemente esté bien, pero modificarlo puede causarle problemas en algunas jurisdicciones.

    
respondido por el Matthew 23.12.2015 - 11:44
fuente
0

Tenga en cuenta que la mayoría de los sitios web permiten a los usuarios restablecer sus contraseñas demostrando que tienen acceso a su dirección de correo electrónico. Esta forma de restablecimiento de contraseña funciona de manera similar a la característica de "inicio de sesión de un solo clic" de la que habla. tener acceso a ese token (y, por lo tanto, al correo electrónico) implica que está autenticado.

La principal diferencia es que el usuario no sabrá que el enlace implica autenticación . Esto significa que pueden compartir el enlace con un amigo o publicarlo en línea sin darse cuenta de las implicaciones.

Si realmente existe un requisito genuino para esta funcionalidad de "inicio de sesión con un clic" (sí, a veces hay una compensación entre la seguridad y la facilidad de uso), entonces las implicaciones de seguridad podrían reducirse al administrar los tokens de la misma manera estricta que usted. debería para tokens de restablecimiento de contraseña:

  • Hacer el token one-time-use : esto significa que el usuario iniciará sesión instantáneamente en el primer clic y requerirá una nueva autenticación en los siguientes clics. Al enviar nuevos correos electrónicos, genere nuevos tokens.
  • Expira el token en un tiempo razonable, incluso si nunca se usó.
  • Permitir solo un token activo por usuario , junto con hacer que el token sea de un solo uso , garantiza que un atacante no pueda recopilar y utilizar más tarde múltiples enlaces.
  • Haga que el token sea completamente impredecible : use una cadena larga generada al azar, usando una fuente segura de entropía.
  • Comunique la función al usuario , para que no sepan compartirla. También puede permitir que desactiven la función.

Cosas que no debes hacer

  • No persistir el token en la URL como una forma continua de autenticación. El usuario definitivamente terminará compartiendo la URL con otros.
  • No intentes generar tokens "aleatorios" mediante el uso de hash en la dirección de correo electrónico del usuario, tampoco utilices la hora actual o cualquier cosa predecible. No hay necesidad de ser inteligente, solo use un valor completamente aleatorio.
  • No tenga esta función en sitios con cuentas de usuario muy valiosas, como bancos o sitios con información privada. Esto solo podría justificarse si cree que no hay un gran costo asociado con las cuentas comprometidas.
respondido por el George Powell 23.12.2015 - 16:57
fuente

Lea otras preguntas en las etiquetas