Ho accesso utente ma l'utente può accedere con modalità maiuscole e minuscole Indica se la password è 'test', quindi l'utente è in grado di accedere con la password 'TEST'.
Voglio evitare l'autenticazione del tipo sul campo password.Come utilizzare la distinzione tra maiuscole e minuscole per il campo della password MySQL?
risposta
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.
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.
Grazie per la vostra pronta risposta la sua buona idea per i rischi per la sicurezza – SKu
@SKu Leggere prima questo - http://codahale.com/how-to-safely-store-a-password/. Usare sha1 non è abbastanza. –
buono per la sicurezza ma non deve fare nulla con la domanda no? – joel