Attualmente sto sviluppando la sicurezza in un sito web. Finora, ho le seguenti regole e mi chiedo se questo sembra sufficiente.
-
5 tentativi di accesso non riusciti per un particolare nome utente causeranno il blocco dell'account per 1 ora
-
Il numero di tentativi di accesso non riusciti per indirizzo IP verrà archiviato nella cache del server. Se un indirizzo IP ha 2 tentativi di accesso non riusciti entro un periodo di 2 minuti, verrà mostrato un Captcha (Google Recaptcha) che deve essere compilato prima di poter tentare nuovamente un altro accesso.
-
Il secondo e successivi tentativi di accesso falliti verrebbero registrati nel database (indirizzo IP, nome utente che tenta di accedere come e timestamp)
-
Se un indirizzo IP supera i 30 tentativi di accesso non riusciti, la pagina di accesso verrà bloccata per quell'indirizzo IP per 2 minuti (ad es. tramite Response.End ()). Voglio rallentare gli attacchi di forza bruta, ma anche consentire alle grandi aziende / istituzioni / università / ecc che possono avere molti utenti dietro un singolo indirizzo IP di essere ancora in grado di accedere anche se ci possono essere diversi accessi falliti per utenti completamente diversi all'interno un breve lasso di tempo.
-
Le tabelle di log potrebbero essere riviste periodicamente per imporre divieti permanenti, ad esempio a livello di firewall.
Sembra una strategia ok, o potrebbero esserci miglioramenti?