J'utilise php. J'utilisais un mot de passe de fonction MySQL natif () pour stocker des mots de passe. On m'a dit que le mot de passe () n'est plus en sécurité. Quelle serait la meilleure méthode pour stocker des mots de passe dans PHP? Est-ce que c'est MD5? P>
6 Réponses :
Vous devez saler le mot de passe. P>
vBulletin fait un bon bon travail pour stocker des mots de passe. MD5 (MD5 (mot de passe) + sel); p>
Je ne suis pas sûr de ce que le point de double-md5ing est ... c'est juste une forme de sécurité à travers l'obscurité, n'est-ce pas? "Oh, ils ne devineront jamais que je le md5'd deux fois!"
Une attaque arc-en-ciel devient vraiment difficile à craquer. Il est maintenant 32 personnages plus les trois sel.
Le gagnant du Phc (La compétition de hachage de mot de passe) était argon2 . Mots de passe hachage avec Argon2 est la meilleure pratique à partir de 2016. P>
PHC a couru de 2013 à 2015 en tant que concurrence ouverte - le même type de processus que les compétitions AES et SHA-3 de NIST et le moyen le plus efficace de développer une norme de crypto. Nous avons reçu 24 candidats, y compris de nombreux excellents dessins, et un gagnant sélectionné, Argon2, un algorithme conçu par Alex Biryukov, Daniel Dinu et Dmitry Khovratovich de l'Université de Luxembourg. P>
Nous vous recommandons d'utiliser que vous utilisez Argon2 plutôt que des algorithmes hérités. P> blockQuote>
Le La mise en œuvre de la référence est disponible sur GitHub . P>
Réponse mise à jour 2012: h2>
La réponse originale que j'ai donnée ci-dessous était une fois considérée comme une meilleure pratique. Cependant, les progrès de la technologie de calcul de hachage ont rendu ces régimes vulnérables. À l'avenir, les seuls schémas de hachage de mot de passe sécurisé sont des hachages itératifs tels que BCRYPT et PBKDF2 . Pour une discussion complète, voir Analyse de Jeff Atwood . p>
Réponse originale 2009: h2>
Je recommande d'abord préparer un Sel valeur à votre mot de passe, suivi de < un href = "http://fr.wikipedia.org/wiki/cryptographic_hash_function" rel = "NOfollow NOREFERRER"> hachage la chaîne résultante avec une fonction de hachage raisonnablement forte comme SHA256 . Cela fixe contre les éléments évidents (mots de passe en texte brut) et pas si évident (attaque utilisant Tables arc-en-ciel ). p>
N'oubliez pas que si vous stockez des mots de passe de cette manière, vous ne pourrez pas em> pouvoir récupérer le mot de passe perdu d'un utilisateur. Ils ne pourront étant que pour réinitialiser les mots de passe. C'est parce que vous utiliserez un une solution HASH . Mais cette limitation vaut généralement le compromis pour un système de stockage de mots de passe plus sécurisé. Même si votre base de données est compromise, les mots de passe de votre utilisateur seront toujours extrêmement difficiles et probablement peu productifs de récupérer par un attaquant. P>
C'est l'une des deux manières de traiter des mots de passe. L'autre est; Ne pas. Utilisez OpenID / Facebook Connect / Live auth / autre chose; en d'autres termes; Laissez quelqu'un d'autre stocker le mot de passe.
BCRYPT est-il meilleur que cette configuration?
Oui, utilisez BCRYPT plutôt que de le faire. Bcrypt fait toutes les bonnes choses décrites ci-dessus pour vous, plus plus.
@HATORADE, @TIALARAMEX: Je ne connaissais pas Bcrypt à l'époque où j'ai écrit cette réponse. J'ai depuis appris les avantages du hachage itératif. Je vais mettre à jour la réponse en conséquence.
Pour discuter avec l'autre réponse, Vbulletin fait un travail horrible de mots de passe hachage. Leur sel n'est que de 3 caractères seulement, n'augmente que de manière fractionnée la sécurité de votre application. P>
Consultez http://www.openwall.com/phpass/ . Ils font un excellent travail d'utilisation d'un long hash, unique à chaque mot de passe et exécutant le mot de passe à travers des milliers de fois. C'est l'un des meilleurs systèmes de hachage pour PHP là-bas. P>
MD5? :( des milliers de fois? Double :(
Quel algorithme regardez-vous? Sauf s'il y a soudainement changé, il a utilisé 2048 passes de MD5, chacun en utilisant le sel.
Si vous pouvez éviter de stocker le mot de passe de l'utilisateur, c'est votre meilleure option, imo. Utilisez OpenID (comme Stackoverflow) pour authentifier l'utilisateur. Ou authentification en direct ( http://dev.live.com/liveid/ ). Si vous avez vraiment besoin d'authentifier les utilisateurs vous-même; Faites ce que ASAP dit dans sa réponse. :) p>
sel et hachage. p>
Nous utilisons généralement un guid aléatoire comme le sel et ensuite SHA512 à hachage. P>
BCRYPT est en fait plus sécurisé. Voir: