Ho problemi a comprendere appieno come prevenire i tentativi di accesso rapidi. Le mie domande provengono essenzialmente da La guida definitiva all'autenticazione del sito Web basata su modulo .
Il consiglio finale è impostare una limitazione dell'accesso, impostando un intervallo di tempo tra i tentativi non riusciti . Qualcosa come:
- 1 tentativo fallito = 5 secondi di ritardo
- 2 tentativi falliti = 15 secondi di ritardo
- 3+ tentativi falliti = 45 secondi di ritardo
Alcune domande che ti vengono in mente facilmente sono:
-
Se stiamo cercando di proteggere il nostro sistema dagli attacchi brute-force o di dizionario, come mai i ritardi sono così restrittivi ?. Uno degli esempi mostra un aumento di 2 ** 2 per tentativo non valido. Non sarebbe una discreta quantità di tempo scoraggiare già un aggressore automatico?
-
In questo schema di protezione, quale sarebbe il client? Come sarebbe identificato? Stiamo parlando di un account IP + o solo di un account ?. Se stiamo parlando di un solo account senza tenere conto dell'IP, non è probabile che infastidiscano gli utenti legittimi che tentano di accedere al proprio account?
-
Non ho mai visto materiale di lettura che parli degli umani che tentano di accedere agli account ?. Capisco che questo caso sarebbe altamente improbabile (più se assumiamo politiche relative alle password in atto) ma, cosa succede se un utente malintenzionato ha creato un elenco di password probabili tramite un metodo (social engineering). Non dovrebbe essere protetto anche questo ?. Perché in quel caso, essendo il cliente identificato dall'account IP +, essere molto restrittivi avrebbe molto senso, provare a bloccare l'IP che sta usando.
-
In che modo gli accessi con throttling non riusciti fanno davvero la differenza tra la semplice limitazione? . Con la limitazione semplice, intendo un throttle sull'endpoint 'login' che controlla il numero di volte in cui provi ad accedere, ma senza tener conto se questi tentativi hanno avuto successo o meno.
Assumendo questa definizione precedente per quello che intendevo con una semplice accelerazione, supponiamo di controllare il numero di volte che è possibile chiamare l'endpoint di accesso per un account dato un intervallo di tempo:
- Per ogni account, l'endpoint di accesso può essere chiamato 3 volte al minuto.
Basterebbe questo per fermare un attacco di forza bruta ?. Aggiungendo questo ritardo menzionato prima quando il tentativo non è valido si ottengono risultati migliori?.
Sarei molto grato se qualcuno potesse far luce qui.