Dovresti sempre implementare qualche forma di limitazione sui tentativi di accesso - anche con il trucco casuale, non è molto pratico per molte persone memorizzare una passphrase con sufficiente entropia per essere protetta contro un dizionario non limitato attacco, soprattutto se hanno bisogno di uno separato per ogni sito che usano.
(Ci sono modi per aggirare il problema dal lato client, come usare un portafoglio delle password sicuro per memorizzare il sito password, con una singola passphrase strong per accedere al portafoglio, ma per varie ragioni non sono ancora state prese in considerazione.)
Vale anche la pena notare che un attaccante determinato può DOS il tuo sito benissimo anche senza limitazione dell'accesso. La limitazione, se implementata con noncuranza, rende più facile un particolare tipo di attacco DOS mirato. Per mitigare questo effetto, suggerirei almeno i seguenti passaggi:
-
Imposta un limite di accesso per IP piuttosto basso, nonché uno più alto per sito. Ciò significa che un utente malintenzionato deve impiegare più computer con indirizzi IP diversi per DOS efficacemente il proprio sito, il che, sebbene sia certamente possibile, presenta ancora un rallentamento. (Puoi anche o meno volere un limite per utente: è logico se ti aspetti che gli attacchi al dizionario siano mirati ai singoli utenti, ma in molti casi un tipico aggressore sarebbe altrettanto contento della password per qualsiasi account, nel qual caso la loro strategia migliore è quella di attaccarli tutti in parallelo.)
-
Quando viene raggiunto il limite, registralo. Se continua a essere colpito ripetutamente, avvisa gli amministratori del sito, che si tratti di un tentativo DOS o di un vero e proprio attacco al dizionario, vorranno saperlo.
-
Assicurati di fornire agli utenti un modo alternativo per contattare gli amministratori se non riescono ad accedere a causa della limitazione.
-
Ultimo ma non meno importante, richiede un token anti-CSRF su tutti i tentativi di accesso. Dovrai comunque fare questo per proteggerti da login CSRF , ma come utile effetto collaterale, si ferma anche alcuni tipi di attacchi distribuiti semplicistici (come creare un collegamento diretto allo script di accesso e includerlo come URL di immagine in messaggi di forum ampiamente letti).
In definitiva, la lunghezza della password IMO ei requisiti del modulo sono un'aringa rossa, almeno dal punto di vista dell'amministratore del sito: se lasci che i tuoi utenti scelgano la propria password, alcuni sceglieranno quelli deboli, non importa che cosa. Se hai bisogno di password alfanumeriche con segni di punteggiatura, alcuni utenti sceglieranno "abc & 123"; se hai bisogno di frasi di quattro parole, sceglieranno "I love my mom".
Puoi accettarlo e trovare modi per conviverci, oppure, se non puoi o non vuoi farlo, prendi la scelta lontano dai tuoi utenti e genera password casuali per loro. In tal caso, molto suggerisco caldamente di utilizzare il metodo "quattro (o più) parole comuni", poiché restituisce molte password più memorizzabili per una determinata quantità di entropia rispetto a , per esempio, selezionando caratteri o sillabe casuali.