Il modo consueto di memorizzare la password consiste nell'utilizzare una funzione di hash sulla password, ma su salt in precedenza. È importante "salare" la password per difendersi dagli attacchi rainbow table.
Così la vostra tabella dovrebbe essere simile a quello
._______._________________.______________.
|user_id|hash |salt |
|-------|-----------------|--------------|
|12 |[email protected]|13%!#tQ!#3t...|
| |... |... |
Quando si controlla se una determinata password corrisponde a un utente, si dovrebbe concatenare il sale per la password data, e calcolare la funzione hash della stringa di risultato. Se l'output della funzione hash corrisponde alla colonna hash
, è la password corretta.
È importante capire, tuttavia, che l'idea di hash ha un motivo specifico: impedire a chiunque abbia accesso al database di conoscere qualsiasi password (è considerato un problema difficile invertire l'output di una funzione hash). Quindi, ad esempio, il DBA della banca, non sarebbe in grado di accedere al tuo conto bancario, anche se ha accesso a tutte le colonne.
Si consiglia inoltre di utilizzarlo se si ritiene che gli utenti utilizzeranno una password sensibile (ad esempio la password per il proprio account Gmail) come password per il sito Web.
IMHO non è sempre una funzione di sicurezza che è necessaria. Quindi dovresti pensare se lo vuoi o no.
Vedere this article per un buon riepilogo di questo meccanismo.
Aggiornamento: Vale la pena ricordare, che per una maggiore sicurezza contro l'attacco mirato per l'inversione di hash di password personale, si dovrebbe use bcrypt, che può essere arbitrariamente difficile da calcolare. (Ma a meno che tu non sia davvero spaventato dal misterioso uomo in nero che prende di mira il tuo database specifico, penso che sha1 sia abbastanza buono.Non introdurrei un'altra dipendenza per il mio progetto per questa ulteriore sicurezza.Questo, non c'è motivo per non usare sha1 100 volte, il che darebbe un effetto simile).
Se si tratta di un dominio AD, non è possibile consentire a AD di gestire l'autenticazione? – Rytmis
Grazie a tutti per i suggerimenti. Richard – Richard