Nel tuo processo, le persone riceveranno un codice di errore distinto a seconda che l'account esista o meno. Questo è spesso considerato in qualche modo inopportuno. È preferibile se non è possibile, per gli estranei, sapere se esiste un determinato nome ; pertanto, il comportamento osservabile del server deve essere lo stesso in tutte le situazioni che dipendono dal nome dell'account e portare a un errore: l'account non esiste, l'account è disabilitato, la password è sbagliata. Nota che il "comportamento osservabile" include non solo il codice di errore restituito, ma anche il tempo impiegato dal tuo server per rispondere (se usi hashing password lento e salato à la bcrypt - e lo fai davvero - quindi la verifica della password può richiedere un tempo non trascurabile che può essere misurato dall'esterno).
Il bando di un indirizzo IP dopo alcuni errori ha i seguenti avvertimenti:
-
L'indirizzo IP che vedi potrebbe essere condiviso tra più persone, in caso di NAT . Questo è molto comune nelle organizzazioni. Sono comuni anche i proxy HTTP . Non vuoi che tre errori di uno utente inducano il tuo server a mettere al bando un'università completa, o anche tutti i clienti di un ISP specifico.
-
A volte, le persone dimenticano la loro password. Questo succede molto In questo modo otterrete errori di accesso "legittimi". Tali utenti vorranno utilizzare il processo "Ho dimenticato la mia password" e vorranno farlo immediatamente . Pertanto, il divieto non deve essere lungo (ad esempio, divieto per un minuto al massimo).
-
Gli hacker che sono intenzionati a provare molte potenziali coppie di login + password avranno relativamente pochi problemi nel trovare host relay per aggirare il banning basato su IP. Per esempio. Tor , per costruzione, diminuisce l'efficienza del bando IP.
Pertanto, non raccomando il bando degli indirizzi IP su base generale: ha un alto rischio di interrompere il servizio per gli utenti normali, pur non essendo molto efficace contro gli aggressori medi. Il bando IP è utile contro le situazioni di scoppio con aggressori crudi (ad esempio attacchi automatici da botnet che tentano di replicare), con strumenti come Fail2ban , ma possono ritorni di fiamma, quindi deve essere esercitata cautela.
Ricorda che il blocco degli account può anche ritorcersi contro:
-
Bloccare un account dopo troppi errori significa che chiunque può bloccare gli account di altre persone.
-
Gli aggressori che tentano molte coppie di login + password possono diffondere i loro tentativi su molti accessi distinti, evitando la funzione di blocco.
Soluzioni ragionevoli coinvolgono blocchi a tempo limitato (bloccano un account per circa un minuto dopo alcune password sbagliate) abbinati a un bind IP limitato nel tempo quando viene identificato un modello di accesso molto sospetto (molto di tentativi di connessione dallo stesso IP). Non daranno una protezione strong (solo le password degli utenti forti saranno), ma potrebbero aiutare a ridurre il rumore degli aggressori di basso grado e permetterti di concentrarti sui pochi casi in cui gli attaccanti mostrano una quantità insolita di competenze.