Generación y autenticación de claves seguras en PHP

1

No estoy seguro de cómo expresar esto, así que solo explicaré mi situación y espero que puedas ayudar.

Tengo que crear un sitio que tendrá de 50 a 100 estudiantes, todos ellos seleccionando los cursos que les gustaría tomar para el próximo semestre. Como idealmente, cada estudiante solo debería poder acceder al sitio durante una semana, estaba considerando generar una clave y enviarla por correo electrónico. Esta clave sería de 8 a 10 caracteres alfanuméricos similares a: 8fgea2awde . La clave se almacenaría en la base de datos con una fecha de caducidad vinculada a la cuenta del usuario. Luego, una vez que el usuario inicia sesión con su clave, se crea y autentica una sesión segura mientras están conectados. Sé que no está muy lejos del nombre de usuario & enfoque de contraseña.

Sé que Oauth existe, aunque no tengo idea de cómo funciona. Idealmente, no me gustaría "rodar mi propia seguridad", me gustaría usar un tercero, pero no estoy seguro de cómo encajaría en mi situación.

Me preguntaba si este era un buen enfoque? ¿Quizás conoce un enfoque mejor o más utilizado?

Me estarías ahorrando mucho infierno.

    
pregunta Warosaurus 09.05.2015 - 20:28
fuente

1 respuesta

0
  

La pregunta está más orientada hacia si es una buena idea generar   ¿Contraseñas para los usuarios y se las enviamos por correo electrónico?

Las razones para no hacer esto incluyen:

  • Podría ser vulnerable al surf de hombro. Un usuario que pasa por delante mientras otro usuario abre su correo electrónico sin esperar que se muestre una contraseña podría tener sus credenciales robadas. Esto es particularmente un riesgo en un entorno universitario donde todos usan el mismo sistema.
  • Esto viola una política de no generar contraseñas. Un sistema más seguro solo tiene entrada de contraseñas; se adhiere a esta regla y tenderá a encontrar que, en general, tiene un sistema bastante seguro en términos de administración de contraseñas.
  • Cualquier persona que tenga acceso temporal a una cuenta de correo electrónico podrá tomar la contraseña sin ser detectada. Por ejemplo, si la estación de trabajo se deja desbloqueada por un período muy corto, se habilitará un ataque muy pasivo donde quedará muy poca evidencia del compromiso.

Un sistema más seguro enviaría un correo electrónico y en su lugar incluiría un enlace y un código criptográfico de una sola vez. Esto permitirá al estudiante seguir el enlace, ingresar el código (el enlace y el código se pueden combinar con la cadena de consulta, sin embargo, esto es un poco menos seguro ya que las URL se registran de forma predeterminada, se almacenan en el historial y se pueden exponer en el referer header) y luego configure su propia contraseña.

Una vez que se ha configurado la contraseña, el enlace no se puede usar de nuevo, por lo que cualquier uso posterior del correo electrónico será benigno.

    
respondido por el SilverlightFox 10.05.2015 - 09:27
fuente

Lea otras preguntas en las etiquetas