2011-12-12 1 views

risposta

13

Il modo più semplice è quello di utilizzare la parola chiave binary nel vostro uso query:

SELECT /*fields*/ FROM table WHERE /* where clause */ BINARY password = "userpassword" 

O

utilizzare il strcmp nel codice PHP:

È possibile utilizzare questo anche se si memorizza hash o password crittografata che consiglio.

5

Immagino che stiate memorizzando le password in chiaro. Questo non è solo abbastanza insicuro, è anche inutile nella maggior parte delle situazioni. Il mio consiglio è quello di memorizzare le password in due colonne, ad esempio:

password_salt VARCHAR(16) 
password_hash VARCHAR(40) 

Prima di riporre una nuova password, prendere la password fornita dall'utente ($clear_password), creare una stringa casuale ($salt) e utilizzare sia per creare un hash (sha1sum($salt . $clear_password). Conservare sia il sale e l'hash e scartare la password chiara.

Per convalidare una password, recuperare il sale memorizzato per l'utente specificato, generare l'hash e verificare se corrisponde all'hash nel DB.

Questa tecnica è denominata salted passwords.

+0

Grazie per la vostra pronta risposta la sua buona idea per i rischi per la sicurezza – SKu

+1

@SKu Leggere prima questo - http://codahale.com/how-to-safely-store-a-password/. Usare sha1 non è abbastanza. –

+0

buono per la sicurezza ma non deve fare nulla con la domanda no? – joel