Pregunta

me gustaría evitar que los bots pirateen cuentas débiles protegidas por contraseña. (por ejemplo, esto pasó a eBay y otros sitios grandes)

Así que estableceré un valor (mem-) en caché con la ip, la cantidad de intentos y la marca de tiempo del último intento (memcache-fall-out).

Pero, ¿qué pasa con los robots que intentan abrir cualquier cuenta con una sola contraseña? Por ejemplo, el bot intenta los 500,000 cuentas de uso con la contraseña " password123 " ;. Tal vez se abrirán 10.

Así que mi intento fue simplemente almacenar en caché la ip con los intentos y establecer max-tries en ~ 50. Lo eliminaría después de un inicio de sesión exitoso. Entonces, el buen bot simplemente iniciaría sesión con una cuenta válida cada 49 intentos para restablecer el bloqueo.

¿Hay alguna manera de hacerlo bien? ¿Qué hacen las grandes plataformas al respecto? ¿Qué puedo hacer para evitar que los idiotas bloqueen a todos los usuarios en un proxy con el reintento 50 veces?

Si no hay una mejor práctica, ¿significa esto que alguna plataforma es bruta? ¿Al menos con una pista cuando los contadores se reinician?

¿Fue útil?

Solución

Creo que puedes mezclar tu solución con captchas:

  1. Cuente el número de intentos por IP
  2. En caso de que haya demasiados intentos de una dirección IP determinada dentro de un tiempo determinado, agregue un captcha a su formulario de inicio de sesión.

Otros consejos

Algunos sitios le dan quizás dos o tres intentos antes de comenzar a hacer que ingrese un captcha junto con su nombre de usuario / contraseña. El captcha desaparece una vez que inicias sesión correctamente.

Hubo un artículo relativamente bueno sobre Coding Horror hace unos días .

Si bien el código se centra en Django, hay una discusión muy buena sobre los métodos de mejores prácticas en el blog de Simon Willison . Utiliza memcached para rastrear IP y fallas de inicio de sesión.

Puede usar un comprobador de contraseña cuando un usuario establece su contraseña para asegurarse de que no estén usando una contraseña fácil de forzar.

EDITAR: para ser claros, esto no debe verse como una solución completa al problema que está tratando de resolver, pero debe considerarse junto con algunas de las otras respuestas.

Nunca podrás evitar que un grupo de bots intente esto desde muchas direcciones IP diferentes.

Desde la misma dirección IP: diría que si ve un ejemplo de "sospechoso" comportamiento (nombre de usuario no válido o varias cuentas válidas con intentos de inicio de sesión incorrectos), simplemente bloquee el inicio de sesión durante unos segundos. Si es un usuario legítimo, no les importará esperar unos segundos. Si es un bot, esto los ralentizará hasta el punto de no ser práctico. Si continúa viendo el comportamiento de la dirección IP, simplemente bloquéelos, pero deje una puerta fuera de banda para usuarios legítimos (llame al teléfono #x o envíe esta dirección por correo electrónico).

TENGA EN CUENTA: las direcciones IP se pueden compartir entre MILES o incluso MILLONES de usuarios. Por ejemplo, la mayoría / todos los usuarios de AOL aparecen como un conjunto muy pequeño de direcciones IP debido a la arquitectura de red de AOL. La mayoría de los ISP asignan sus grandes bases de usuarios a un pequeño conjunto de direcciones IP públicas.

No puede suponer que una dirección IP pertenece a un solo usuario.

No puede asumir que un solo usuario utilizará solo una dirección IP.

Verifique la siguiente pregunta que discute las mejores prácticas contra la fuerza bruta distribuida y los ataques de diccionario:

¿Cuál es la mejor contramedida de fuerza bruta distribuida?

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