[Php] Correctement hacher un mot de passe
|
17-06-2011, 04h18
(Modification du message : 19-11-2012, 19h01 par InstinctHack.)
Message : #1
|
|
CyberSee
Admin fondateur de N-PN Messages : 1,721 Sujets : 287 Points: 157 Inscription : Jan 2012 |
[Php] Correctement hacher un mot de passe
A chaque fois l'on créé un programme qui stock des données sensible comme un mot de passe il est primordial de bien protéger l'information. En PHP il existe une fonction qui ce nomme md5 (Message Digest 5) qui consiste a encrypter à partir d'un fichier numérique, son empreinte numérique (en l'occurrence une séquence de 128 bits ou 32 caractères en notation hexadécimale) avec une probabilité très forte que deux fichiers différents donnent deux empreintes différentes. Sa été pendant plusieurs années la façon la plus sur d'encrypter les mots de passe à condition qu'il ait 6 caractères et plus. Depuis 4 ans maintenant sur le web, il ya de plus en plus de librairies MD5 qui sont en traine de décrypter toutes les possibilités de caractère avec leur équivalant ce qui permet a des hacker de trouver en 2 secondes ce qui prendrait 1 an a décrypter par brute force.
Ex: http://decrypt.fr/ qui dit en avoir décrypté 250 000 000 Il est donc primordial pour tout bon codeur de metre sur pied un système qui permet de bien encoder les mot de pass. Certain programmeur utilise la technique du double MD5 ... perso, j’ai la crainte que si il on fait une librairie pour les md5 simples, ya de bonne chance qu'il le face pour les doubles et voir même les triples encodages puisque c'est une technique très répandue. La meilleure façon de bien encrypter les mots de passe c'est de faire une manipulation unique et secrète avec le mot de passe avant l'encryptage MD5 que l'ont nomme "Clé d'encription" Ex: Code PHP : $cle = "7tg%4r8*97hhfr#121)2"; // 20 caractères ou + Cette clé peut être fabriqué de façon complètement random et enregistrer dans une table l'hors de l'installation de l'application que vous créé ou simplement rentrer à la dure dans votre fichier config. La technique consiste a joindre les deux ensemble avant l'encryptage Ex: Code PHP : $password = md5(md5($cle.$_POST['password'].$cle)); Vos mots de passe sont à présent complètement sécurisé, car la chaine encryptée a minimum 48 caractères et doublement encodés =) Si on voulait pousser l'expérience a un extrême on pourrait faire quelque chose du genre de Code PHP : $cle = "7tg%4r8*97hhfr#121)2"; // 20 caractères ou + Veillez cité la source et l'auteur si vous désirer reprendre mon tuto. Soyez intelligent et restez WhiteHat! Par CyberSee |
|
29-02-2012, 23h23
Message : #2
|
|
InstinctHack
Posting Freak Messages : 1,366 Sujets : 184 Points: 299 Inscription : Dec 2011 |
RE: Correctement encoder un mot de passe
loin de moi l'idée de te traiter d'idiot, mais ta méthode de md5(md5($var)) AUGMENTE le risque de collisions, elle est donc à ne SURTOUT pas faire, je suis en train de changer d'OS, c'est un peu la merde, mais je posterais un script qui liste les hash (c'est tous simple)
de plus utiliser une aussi longue clé ne sert pas à grand chose. il vaut mieux se tourner vers du sha1, sha256, voir whirpool (que j'utilise car des librairies whirpool j'en n'ai pas trouver des masses...) de plus il existe 4 types de sel classé selon 2 critères ; sel constant statique sel constant dynamique sel variable statique sel variable dynamique le plus sur étant encore le dernier désolé j'ai pas le temps de faire mieux, mais attention à la méthode de CyberSee :/ elle n'est pas fiable du tout... (selon mon petit livre sur la crypto et plusieurs sources sur internet ) php toujours Code PHP : $pseudo="sonn";$mdp="azerty";$sel="%:#"; voilà, voilà pour des scripts sécurisés, je les garde pour mon framework donc pas dans ce sujet Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!" |
|
« Sujet précédent | Sujet suivant »
|
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)