¿El mejor método para bloquear solicitudes de inicio de sesión repetidas sin una base de datos?

StackOverflow https://stackoverflow.com/questions/1001963

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy tratando de escribir una función mejorada de restablecimiento de contraseña para uno de nuestros sitios web públicos y, además de un mejor captcha, quería marcar un nombre de usuario que intente iniciar sesión sin éxito x cantidad de veces en menos de un minuto . La primera idea fue tener una base de datos que registre cada intento y luego después de la cantidad máxima de intentos en el tiempo, simplemente bloquearemos la cuenta hasta que se reciba una llamada telefónica del gerente del empleado para restablecerla.

¿Cuál es un mejor enfoque que no requiere persistencia a través de SQL? (¿Cookie / algo más?) Si una no existe, ¿cómo puedo hacer esto con un enfoque más limpio? por alguna razón, mi cerebro está lleno hoy

¿Fue útil?

Solución

Verifique esta respuesta sobre Acelerarlos.
Intentos de inicio de sesión de limitación

Jeff Atwood tiene una publicación de blog interesante sobre el tema en caso de que tenga curiosidad.
http://www.codinghorror.com/blog/archives/001206.html

Almacenarlos en una base de datos puede ser tedioso, y terminarás preocupándote por inundar tu mesa con intentos de inicio de sesión fallidos. Además, almacenar algo en la máquina del usuario que controla esto también es complicado porque tienen control sobre todos los archivos en su máquina, y podrían restablecer fácilmente su contador de inicio de sesión fallido, o peor aún, enviarle datos defectuosos / maliciosos.

Otros consejos

Usar cookies o sesiones sería malo, ya que un usuario podría borrar sus intentos de inicio de sesión simplemente borrando las cookies. ¿Quizás sería apropiado usar un archivo en un directorio temporal para almacenar los intentos de inicio de sesión?

Bueno, una cookie no es útil contra un atacante (solo eliminarán la cookie o simplemente no se la enviarán). Si tiene el estado de la aplicación en la memoria, puede usarlo, pero debe tener mucho cuidado, ya que hacerlo podría llenar su memoria muy rápidamente, además de tener problemas de escalabilidad debido a la concurrencia y cierre. E incluso esto podría no funcionar en una aplicación que se ejecuta en muchos servidores diferentes, ya que el estado de la aplicación probablemente no se comparte entre esos servidores. ¿Por qué crees que almacenar datos en la base de datos es una mala idea?

Puede usar una base de datos, usar memcache y configurar un trabajo cron para volcar la tabla periódicamente. También podría usar cookies o variables de sesión, pero no confiaría en estas por razones de seguridad.

Tenga en cuenta que el objetivo de un cracker podría no ser obtener acceso a su sistema, sino hacerlo inutilizable para todos. ¡Tal vez pueda lograr esto al iniciar sesión voluntariamente con credenciales falsas para bloquear a ciertos usuarios de su sitio! Creo que no encontrarás una solución adecuada sin una base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top