Vorrei implementare un meccanismo di blocco che non solo protegge dallo stesso nome utente e da molti attacchi di password, ma anche molti nomi utente e gli stessi attacchi con password.
Per implementarlo ho pensato di avere bisogno di una tabella per memorizzare ogni password inserita che ha causato un tentativo fallito. Quindi, ad ogni tentativo di accesso, controllo se c'è stato un tentativo di accesso fallito con la stessa password.
Tutte le password che appartengono agli account utente sono crittografate con bcrypt, hanno un sale, un costo elevato e tutto il resto. Ma non posso crittografare le password usate in un tentativo di accesso fallito del genere, posso? Non posso fare una ricerca con MySQL usando la clausola WHERE perché ogni volta che viene rehashed una password, il valore differisce dall'hash precedente anche se è la stessa password.
Per poter eseguire una ricerca con MySQL usando la clausola WHERE ho pensato di dover memorizzare le password nella tabella dei tentativi di accesso falliti in un modo meno sicuro, come SHA512. So che alcune password inserite in un tentativo di accesso fallito potrebbero appartenere a un account utente. Quindi, è sicuro archiviare gli hash in questo formato per poter verificare i tentativi di accesso falliti? O c'è un modo migliore per raggiungere questo obiettivo?