En su proceso, las personas obtendrán un código de error distinto dependiendo de si la cuenta existe o no. Esto a menudo se considera algo inoportuno. Es preferible, si no es posible, saber si existe una cuenta determinada nombre ; por lo tanto, el comportamiento observable de su servidor debe ser el mismo en todas las situaciones que dependen del nombre de la cuenta y conducen a una falla: la cuenta no existe, la cuenta está deshabilitada, la contraseña es incorrecta. Tenga en cuenta que el "comportamiento observable" incluye no solo el código de error que devuelve, sino también el tiempo que tarda su servidor en responder (si utiliza el hashing de contraseñas lento y salado à la bcrypt - y realmente deberías hacer eso - entonces la verificación de la contraseña puede tomar un tiempo no despreciable que se puede medir desde el exterior).
Prohibir una dirección IP después de algunos fallos tiene las siguientes advertencias:
-
La dirección IP que ve puede ser compartida entre varias personas, en caso de NAT . Esto es muy común en las organizaciones. También son comunes los proxies HTTP . No desea tres errores de un usuario para inducir a su servidor a prohibir una universidad completa, o incluso a todos los clientes de un ISP específico.
-
A veces, las personas olvidan su contraseña. Esto pasa mucho. Así obtendrá errores de inicio de sesión "legítimos". Dichos usuarios querrán usar el proceso "Olvidé mi contraseña", y querrán hacerlo inmediatamente . Por lo tanto, la prohibición no debe ser larga (por ejemplo, prohibir un minuto como máximo).
-
Los atacantes que tienen la intención de probar una gran cantidad de posibles pares de inicio de sesión y contraseña tendrán relativamente pocos problemas para encontrar hosts de retransmisión para solucionar su prohibición basada en IP. P.ej. Tor , por construcción, disminuye la eficiencia de la prohibición de IP.
Por lo tanto, no recomiendo la prohibición de direcciones IP de forma general: tiene un alto riesgo de interrumpir el servicio para los usuarios normales, aunque no es muy efectivo contra los atacantes promedio. La prohibición de IP es útil contra situaciones de ráfaga con atacantes crudos (por ejemplo, ataques automáticos de botnets que intentan replicarse), con herramientas como Fail2ban , pero pueden contraproducente, por lo que se debe tener precaución.
Tenga en cuenta que el bloqueo de cuentas también puede ser contraproducente:
-
Bloquear una cuenta después de demasiados fallos significa que cualquiera puede bloquear las cuentas de otras personas.
-
Los atacantes que intentan varios pares de inicio de sesión y contraseña pueden repartir sus intentos en muchos inicios de sesión distintos, evitando la función de bloqueo.
Las soluciones razonables implican bloques de tiempo limitado (bloquear una cuenta durante aproximadamente un minuto después de unas pocas contraseñas incorrectas) junto con la prohibición de IP por tiempo limitado cuando se identifica un patrón de acceso muy sospechoso (mucho de intentos de conexión desde la misma IP). No brindarán una protección sólida (solo las contraseñas de usuario sólidas), pero pueden ayudar a reducir el ruido de los atacantes de bajo grado y le permiten concentrarse en los pocos casos en que los atacantes tienen una competencia inusual.