CUENTAS DE USUARIO
En algunos casos, una política de bloqueo (o el uso de la función de suspensión php) para proteger un formulario de inicio de sesión podría ser incluso peor (o mucho peor) que un ataque de fuerza bruta, en particular si el atacante tiene acceso a los datos de inicio de sesión de la cuenta de usuario: por ejemplo, en los casos en que los nombres de usuario públicos se utilizan para la autenticación, lo cual es malo en general, si es evitable. El atacante podría bloquear a los usuarios registrados una y otra vez (DOS), lo que llevaría a un verdadero desastre. Nunca hagas eso en un sitio web público.
Probablemente sea mucho más fácil para un atacante explotar un sistema de bloqueo de cuenta basado en intentos de inicio de sesión, que para un desarrollador crear uno eficaz.
Una mejor solución es mantener las buenas prácticas: ocultar la mayor cantidad de información posible, como de costumbre, mientras obliga a los usuarios a crear buenas contraseñas. De esta manera, los ataques de fuerza bruta podrían ser totalmente inútiles: el atacante necesitará demasiados recursos para lograr algo. En este escenario, por ejemplo, use correos electrónicos solo para iniciar sesión (o cualquier otro dato de usuario que no sea público), nunca nombres de usuario públicos, y nunca los haga visibles y recopilables para otros usuarios o público.
Pero no aplique una política de bloqueo en las cuentas de usuario.
IPs
Un buen ataque de DOS se realiza desde muchos ips diferentes. Dicho esto, podría aplicar una política de bloqueo en el servidor web para evitar los ataques de DOS y Brute Force detectando solicitudes excesivas de una sola IP (solicitudes de cualquier tipo, y no solo en una página o formulario de inicio de sesión). Los hospedajes compartidos a menudo adoptan políticas de este tipo y, por lo general, usted no tiene que preocuparse demasiado ya que no puede cambiarlas. Pero si tiene que configurar un servidor dedicado, esto puede ser un poco más complicado: este es un tema para los administradores de servidores, más que para los desarrolladores web. Si usa Apache, podría estar interesado en algo como esto: enlace
Y: enlace