Informatique, internet et puis un peu de tout !
icône RSS Facebook icon Twitter icon
  • Bien protéger les mots de passe de ses utilisateurs

    cadenas-publicitaire

    Les mots de passes sont destinés à vérifier l'identité d'un utilisateur. Le principe est simple et le même depuis l'antiquité : Deux personnes connaissent un mot de passe secret. Elles se l'échangent pour vérifier qu'elles possèdent le même, et si c'est le cas, une confiance peut alors s'établir.

    Le même principe est utilisé en informatique et particulièrement sur internet. A la seule différence près que les deux protagonistes sont le client et le serveur. Dès lors il existe deux failles. Chacun devant retenir le mot de passe de son coté utilise une méthode plus ou moins sécurisée. Pour le client il suffit de le garder en mémoire et de ne le révéler à personne (même pas sous la torture). Le serveur lui a aussi besoin de la stocker. Cette étape se fait la plupart du temps en base de données. Hors si un individu arrive à accéder à cette base via une des nombreuses failles possibles, il peut accéder aux mots de passe.

    Et c'est là que le problème devient critique! En effet, souvent, l'utilisateur pour retenir son pass de manière sécurisée et sans le perdre, réutilise le même! (Hé oui même les humains cherchent l'optimisation de mémoire). Donc si un pirate récupère sur votre site les mots de passes d'un de vos usagers, il peut surement par la suite pirater leurs comptes e-mail, msn, Facebook... Et ceci par votre faute!

    Alors comme vous êtes des développeurs intègres et perfectionnistes je vous propose une petite méthode utilisant le md5 rendant impossible le reverse-engineering et donc la récupération en clair des chaines stockées.

    Il suffit pour cela de générer une chaine aléatoire à ajouter au mot de passe de l'utilisateur, et ensuite seulement de la chiffrer. Ainsi au lieu de chiffrer "invincible" vous allez chiffrer "invincible1yRtdarz34Rtger567Y3o3tgdVsqeTe5" et donc obtenir le hash md5 plus rare. Il ne sera donc pas possible d'utiliser une bibliothèque de hash pour retrouver le mot de passe comme on peut le trouver ici ou la. De plus, plus la chaine initiale est longue plus le reverse devient compliqué.

    Voici le code PHP permettant de générer le $good_password à stocker dans la base:

    $password = 'invincible';
    $token = md5(rand());
    $good_password = md5($password.$token).':'.$token;

    Et voici le code à utiliser pour comparer la chaine entrée par l'utilisateur et celle dans la base:

    $array_pass = explode(':',$good_password);
    echo (md5('invincible'.$array_pass[1]) == $array_pass[0])? true: false;

    Voici donc un bon moyen de protéger vos honorables utilisateurs. Cette méthode est notamment utilisé par le célèbre Joomla. Vous pouvez biensur utiliser la même méthode avec une autre fonction de chiffrement telle que le sha1.

     

    2 responses to “Bien protéger les mots de passe de ses utilisateurs” icône RSS


    Laisser une réponse