Domanda

Sto usando PHP. Ho usato per usare nativo la password funzione mysql () per memorizzare le password. Mi è stato detto che la password () non è più al sicuro. Quale sarebbe il metodo migliore per conservare le password in PHP? è MD5?

È stato utile?

Soluzione

Risposta Aggiornamento 2016:

Il vincitore del PHC (hashing delle password Concorso) è stato Argon2 . Hashing delle password con Argon2 è la migliore pratica a partire dal 2016.

  

PHC corse 2013-2015 come una competizione-lo stesso tipo aperto del processo come AES del NIST e SHA-3 gare, e il modo più efficace per sviluppare uno standard di crittografia. Abbiamo ricevuto 24 candidati, tra cui molti disegni eccellenti, e selezionato un vincitore, Argon2, un algoritmo progettato da Alex Biryukov, Daniel Dinu, e Dmitry Khovratovich presso l'Università del Lussemburgo.

     

Si consiglia di utilizzare di utilizzare Argon2 invece di algoritmi esistenti.

Il implementazione di riferimento è disponibile su GitHub .

Risposta Aggiornamento 2012:

La risposta originale ho dato qui di seguito una volta era considerata una pratica migliore. Tuttavia, i progressi nella tecnologia di hash-computing hanno reso questi schemi vulnerabili. Andando avanti, gli unici schemi di hashing delle password sicure sono hash iterativi, come bcrypt e PBKDF2 . Per una descrizione completa, vedere Jeff Atwood analisi .

Risposta originale 2009:

Mi raccomando prima anteponendo un sale per la password, seguito da < a href = "http://en.wikipedia.org/wiki/Cryptographic_hash_function" rel = "nofollow noreferrer"> hashing la stringa risultante con un ragionevolmente forte funzione di hashing come SHA256 . Questo protegge contro gli evidenti (password in chiaro) e la non così evidente (attacco usando tabelle arcobaleno ).

Tenete presente che se si memorizzano le password in questo modo, si non essere in grado di recuperare la password persa di un utente. Saranno solo in grado di reimpostare le password. Ciò è dovuto al fatto che si utilizza un un modo hash . Ma questa limitazione è in genere vale il compromesso per un sistema di memorizzazione delle password più sicura. Anche se il database è compromessa, le password del vostro utente sarà ancora estremamente difficile e, probabilmente, poco pratico per recuperare da un attaccante sarebbe.

Altri suggerimenti

È necessario il sale della password.

vBulletin fa un buon lavoro a memorizzare le password. md5 (md5 (password) + sale);

Per discutere con l'altra risposta, VBulletin fa un lavoro orribile di hashing delle password. La loro sale è solo 3 caratteri crescente lungo, solo in frazioni la sicurezza della vostra applicazione.

http://www.openwall.com/phpass/ . Fanno un ottimo lavoro di utilizzare una lunga hash, unico per ogni password, e l'esecuzione della password attraverso migliaia md5 di volte. Si tratta di uno dei migliori sistemi di hashing per PHP là fuori.

Se si può evitare di memorizzare la password utente che è la scelta migliore, imo. Utilizzare OpenID (come StackOverflow) per autenticare l'utente. O vivere di autenticazione ( http://dev.live.com/liveid/ ). Se davvero, davvero bisogno di autenticare gli utenti da soli; fare quello che dice Asaf nella sua risposta. :)

Sale e hash.

Usiamo tipicamente un GUID casuale come il sale e poi SHA512 hash.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top