Quindi stiamo cercando di prevenire gli attacchi di forza bruta sulla nostra pagina di accesso al server web - attualmente eseguiamo il blocco basato su IP se x tentativi falliti dall'indirizzo IP si verificano su un periodo di tempo z. Dopo una revisione della sicurezza ci siamo resi conto che potremmo bloccare gli utenti che condividono un IP, che l'articolo OWASP sull'argomento confermato è un problema legittimo. Stiamo considerando la possibilità di modificare l'algoritmo in modo da limitare sia il nome utente che l'indirizzo IP: è una cattiva idea? Non sono terribilmente preoccupato per un aggressore con lo stesso IP della vittima che sta intenzionalmente cercando di bloccare l'account della vittima, ma forse è più facile di quanto mi rendo conto?
psuedocode per il nuovo 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