Per i controlli di autenticazione, Owasp fornisce consigli per prevenire attacchi brute-force da blocco dell'account e vedo questo tipo di consigli in diversi punti (blocco per IP di origine dopo accessi non riusciti, blocco per account ...).
Perché?
Voglio dire, due casi qui:
-
o archiviate in modo sicuro le vostre password nel database con costose verifiche (bcrypt, argon2, ...): in questo caso, le vostre password dovrebbero resistere all'attacco offline, quando l'utente malintenzionato ha accesso diretto in lettura al Banca dati. E penso che lo faranno: se la verifica della password prende sul lato server ~ 0.05s con un hardware decente e imponi una lunghezza della password di 7 caratteri E proibisci la password comune (inclusa in una lista potenzialmente grande), ci vorranno mediamente
0.05 * 62^7 / (2*3600*24*365) = 2 800 years
per decrittografare ogni password (supponendo che gli utenti abbiano scelto password di 7 caratteri in[a-zA-Z0-7]
). A meno che il tuo modello di minaccia non implichi una potenza di calcolo davvero grande, lo trovo abbastanza. E l'attacco online (forza bruta che utilizza il modulo di accesso) è più lento dell'attacco offline: è ancora necessario bloccare l'attaccante se i suoi tentativi di forza bruta sono destinati a fallire per un periodo piuttosto lungo? E sì, il tentativo di forza bruta sarà una sorta di (D) DoS, ma questo deve essere mitigato da tecniche anti- (D) Dos generali che non sono specifiche per i moduli di accesso. -
o non memorizzi la tua password in modo sicuro (hash veloci, niente sale, niente hash ...): questo è un problema e dovresti prima considerare in modo sicuro la memorizzazione delle password. E se non puoi (eredità del software ...), semplicemente aggiungendo un ritardo di 200 ms ad ogni verifica della password si ottiene una protezione simile nel modulo di login (ma non nel caso di perdite di database / attacchi offline), ed è molto più semplice da implementare.
In nessuna di queste 2 alternative vedo bloccare i tentativi di forza bruta come una buona soluzione. Aggiunge complessità e potenzialmente crea vulnerabilità DoS.