Por lo tanto, estamos tratando de evitar ataques de fuerza bruta en nuestra página de inicio de sesión del servidor web. Actualmente, solo hacemos el bloqueo basado en IP si x intentos fallidos de la dirección IP Y ocurren durante un período de tiempo z Después de una revisión de seguridad, nos dimos cuenta de que podríamos estar bloqueando a los usuarios que comparten una IP, que el artículo de OWASP sobre el tema Confirmado es un problema legítimo. Ahora estamos considerando cambiar el algoritmo para restringir por nombre de usuario y por dirección IP. ¿Es una mala idea? No estoy terriblemente preocupado de que un atacante en la misma IP que la víctima intencionalmente intente bloquear la cuenta de la víctima, pero tal vez sea más fácil de lo que creo.
psuedocode para nuevo algoritmo:
username = x
ipAddress = y
// if we're here, user has entered bad credentials
if( tooManyAttempts( x, y ) )
lockAccount
else
...
end if
def tooManyAttempts (username, ipAddress)
attemptsPerTime = getAttempts ( username, ipAddress )
if( attemptsPerTime > attemptsAllowedPerTime )
return true
else
return false
end if
end
def getAttempts ( aUsername, anIpAddress)
query database for attempts records
where value in column username equals aUsername AND
value in column ipAddress equals anIpAddress
return number of records
end