Les meilleures pratiques: méthode la plus sûre pour stocker les mots de passe dans une table? [fermé]

StackOverflow https://stackoverflow.com/questions/1592608

Question

J'utilise PHP. Je l'habitude d'utiliser le mot de passe de la fonction native de MySQL () pour stocker les mots de passe. On m'a dit que le mot de passe () n'est plus sûr. Quelle serait la meilleure méthode pour stocker les mots de passe en PHP? est-il MD5?

Était-ce utile?

La solution

Mise à jour 2016 Réponse:

Le gagnant du SSP (Hashage Competion) était Argon2 . Hachant les mots de passe avec Argon2 est la meilleure pratique en 2016.

  

SSP a couru 2013-2015 comme une compétition ouverte le même genre de processus que les compétitions AES NIST et SHA-3, et la façon la plus efficace d'élaborer une norme de Crypto. Nous avons reçu 24 candidats, y compris beaucoup d'excellents modèles, et choisi un gagnant, Argon2, un algorithme conçu par Alex Biryukov, Daniel Dinu, et Dmitry Khovratovich de l'Université du Luxembourg.

     

Nous vous recommandons d'utiliser vous utilisez Argon2 plutôt que des algorithmes existants.

Le mise en œuvre de référence est disponible sur GitHub .

Mise à jour 2012 Réponse:

J'ai donné ci-dessous était autrefois considéré comme réponse initiale à une meilleure pratique. Cependant, les progrès de la technologie de hachage informatique ont rendu ces régimes vulnérables. À l'avenir, les seuls systèmes de hachage de mot de passe sécurisé sont hash itératifs tels que bcrypt et PBKDF2 . Pour une discussion complète, voir analyse de Jeff Atwood .

Réponse 2009 Original:

Je recommande d'abord préfixer un hachant la chaîne résultante avec une fonction de hachage raisonnablement forte comme SHA256 . Cela garantit contre les évidentes (mots de passe en texte clair) et pas si évidente (attaque à l'aide Rainbow Tables ).

Gardez à l'esprit que si vous stockez des mots de passe de cette façon, vous pas être en mesure de récupérer le mot de passe perdu d'un utilisateur. Ils ne seront en mesure de réinitialiser les mots de passe. En effet, vous allez utiliser un une façon hachage . Mais cette limitation est généralement vaut le compromis entre un système de stockage de mot de passe plus sécurisé. Même si votre base de données est compromise, votre mots de passe de l'utilisateur sera encore extrêmement difficile et probablement peu pratique à récupérer par un attaquant serait.

Autres conseils

Vous devez sel le mot de passe.

vBulletin fait un très bon travail à stocker des mots de passe. md5 (md5 (mot de passe) + sel);

Pour discuter avec l'autre réponse, VBulletin fait un travail horrible des mots de passe de hachage. Leur sel est à seulement 3 caractères, que de plus en plus la sécurité de manière fractionnée votre application.

Consultez http://www.openwall.com/phpass/ . Ils font un excellent travail d'utiliser un long hachage, unique à chaque mot de passe et le mot de passe en cours d'exécution à travers des milliers md5 de fois. Il est l'un des meilleurs systèmes de hachage pour php là-bas.

Si vous pouvez éviter de stocker le mot de passe de l'utilisateur qui est votre meilleure option, imo. Utilisez OpenId (comme Stackoverflow) pour authentifier l'utilisateur. Ou vivre authentification ( http://dev.live.com/liveid/ ). Si vous avez vraiment, vraiment besoin d'authentifier les utilisateurs vous-même; faire ce que dit Asaph dans sa réponse. :)

Le sel et le haschisch.

Nous utilisons généralement un guid au hasard comme le sel, puis SHA512 de hachage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top