è necessario utilizzare un nome utente hash, la password e il sale, come:
hash(length(username)+"_veryuniquesalt4rtLMAO"+username+password)
In questo modo, il database non è vulnerabile a eventuali tabelle arcobaleno esistenti, a causa del sale, e con il nome utente hash lungo con la password è anche impossibile creare una tabella arcobaleno per il tuo specifico metodo di hashing.
Utilizzando un "lento" algoritmo di hash garantirà le password meglio, proprio come se fossero più complesse, ma è un compromesso, una volta che avete deciso su un certo livello di lentezza non si può semplicemente scalare indietro quando si bisogno di prestazioni per altre cose
È anche possibile eseguire il client di hashing lento utilizzando JavaScript, in questo modo non si verificherà un problema di prestazioni, ma il metodo richiederà ovviamente che JavaScript sia abilitato.
Qualsiasi cosa scegliate, un po 'di rallentamento è molto meglio di niente, usate 1 millisecondo invece di 1 microsecondo e la vostra protezione è 1000 volte più forte.
Puoi usare bcrypt, oppure puoi fare un algoritmo di hashing convenzionale molto lavoro extra, ma assicurati che il lavoro extra non sia principalmente la concatenazione di stringhe.
Alla fine, è meglio non rubare il database, molte password sono così deboli da essere facilmente estratte, qualunque cosa tu faccia.
Grazie Martin, capisco che. Era una domanda ristretta e meritava una risposta ristretta. – Hissohathair