7
votes

Y a-t-il des pièges de sécurité avec les hachages MD5 existants avec PHPASS?

Avant que je sache mieux, j'ai mis en place un système de connexion avec MD5 comme algorithme de hachage. Maintenant que je sais mieux, j'aimerais passer à l'utilisation de PHPASS. Mon problème est que le système est déjà en production et demandant à tous les utilisateurs de changer leurs mots de passe serait la mère de tous les maux de tête.

Je suis arrivé avec une solution assez simple, mais j'ai donné mon erreur précédente, j'aimerais m'assurer que je ne fais pas une erreur aussi grave en raison de l'ignorance.

Ma solution est la suivante:

changer

  1. MD5 ($ _ POST ['PASS'])
  2. Vérifiez le mot de passe Hashed MD5 contre la valeur de la base de données

    à

    1. MD5 ($ _ POST ['PASS'])
    2. passe mot de passe haché MD5 à $ hasher-> hashapassword ()
    3. Utilisez $ hasher-> checkpassword () Pour vérifier le mot de passe re-haché contre la valeur de dB

      Juste pour la clarté, je ne reproche que la version MD5 parce que c'est ce que j'ai déjà dans la DB. Ce n'est pas conçu comme une mesure de sécurité ajoutée (bien que si c'est le cas, c'est génial!).


2 commentaires

Je ne connais pas PHPASS, mais vous devriez vraiment utiliser un sel .


@str, PHPASS est une très bonne bibliothèque; Il utilise un salage approprié.


4 Réponses :


1
votes

Le problème dont vous parlez n'est pas très spécifique à PHPASS, mais des mots de passe en hachage en général. C'est fondamentalement juste double hachage. Ce sujet a déjà été parlé dans une autre question: " Double hachage "est un mot de passe moins sécurisé que le hachage une fois?

Si vous avez un look là-bas, vous pouvez constater qu'il y a encore de débat sur si le double hachage est pire, car il réduit la gamme de caractères passés dans la deuxième fonction de hachage (ou ultérieure). Cependant, il ralentit le processus de hachage, la lutte contre des attaques de force brute, mais le fait seulement le faire deux fois n'agira pas autant d'une bosse de vitesse.

Si vous ne vouliez pas avoir à gérer le double hachage, ce que vous pourriez essayer de faire était d'ajouter un champ de drapeau à votre utilisateurs table de base de données et définissez-le sur vrai < / Code> Pour tous les nouveaux utilisateurs qui se joignent après avoir configuré le nouveau formulaire PHPASS de hachage. Ensuite, lorsqu'un utilisateur se connecte, s'ils ne disposent pas du jeu de champ d'indicateur, utilisez l'ancien système de hachage ou la version modifiée que vous avez détaillée dans votre question. S'ils ont le champ du drapeau, vous pouvez utiliser le nouveau processus de hachage que vous avez configuré.

mise à jour: en réalité, en s'appuyant sur cela, ce que vous pourriez essayer, c'est avoir cette configuration de drapeau, et une fois qu'ils vont se connecter sous l'ancien système, si c'est une correspondance, alors vous allez Ayez toujours leur mot de passe panneté dans votre _ Post Data, vous pouvez donc exécuter cela via votre nouvelle configuration de hachage, enregistrez le nouveau hachage, puis définissez le drapeau sur vrai , puisque Ils ont été mis à niveau vers la nouvelle méthode de hachage. À partir de ce moment, ils utiliseront la nouvelle méthode de hachage.


0 commentaires

4
votes
  1. MD5 () Le problème est exagéré sur ce site communautaire des programmeurs d'enthousiastes. Rien réellement mauvais dans cet algorithme de hachage, en particulier par rapport à d'autres parties de l'application de Newbie habituelle. Utilisation des techniques PHPASS sur un site PHP habituel est comme à l'aide d'un verrou sûr sur une porte en papier d'une cabane de paille.

  2. chose la plus importante pour garder les mots de passe en sécurité contre Virtual Possibilité d'être volé et utilisé contre le même utilisateur sur d'autres sites (OH, mon!) est force de mot de passe et sel. Not de hachage algorithme lui-même. NO La technique de hachage protégerait SILDY PASS comme "1234" ou "Joe".
    Donc, MD5 + Mot de passe fort + sel moyen est meilleur que Mot de passe habituel + PHPASS

  3. Il n'y a pas une raison ingle de philos Un algorithme de migration sensible est

    • Vérifiez cet enregistrement d'utilisateur pour le nouveau drapeau de hachage.
    • si c'est défini -
      • aller pour PHPASS AUTH
      • sinon:
        • MD5 ($ _ POST ['PASS'])
        • Vérifiez le mot de passe Hashed MD5 contre la valeur de la base de données
        • Si correct:
          • PHPASS ($ _ POST ['PASS'])
          • Enregistrer le résultat dans la base de données
          • Définissez un nouveau drapeau de hachage pour cet enregistrement
          • fait

0 commentaires

-1
votes

Ma méthode garantit que le mot de passe est d'au moins 8 caractères et contient des caractères à déchets non aléatoires ("ordures" signifiant peut-être des caractères non dérangés / nuls): xxx

si vous ne " t comme MD5 , il suffit d'utiliser SHA1 , le principe est identique.


1 commentaires

Cette méthode n'est pas sécurisée. Vous devez ajouter un sel aléatoire, et non quelque chose dérivé du mot de passe. De plus, MD5 et SHA1 sont conçus pour être Fast , une propriété que vous ne voulez certainement pas pour le hachage de mot de passe.



1
votes

Vous obtenez des conseils assez douteux ici, vous voudrez peut-être demander sur Sécurité informatique . Contrairement à ce que certaines personnes ont dit, l'algorithme de hachage de mot de passe est important; Vous souhaitez utiliser Salting et un hachage lent tel que BCRYPT, SCRYPT ou PBKDF2. Voir: Quelle méthode de hachage de mot de passe dois-je utiliser? , Tous les experts de sécurité recommandent BCRYPT pour un stockage de mot de passe? , Comment faire de manière sécurisée Mots de passe? , algorithme (s) de mots de passe (s) de mot de passe sécurisé? . PHPASS est une bonne bibliothèque.

Pour migrer vos utilisateurs sur PHPASS, vous souhaiterez avoir deux bases de données de hachage de mot de passe: l'ancienne (avec des haubans MD5) et le nouveau (avec des haubes PHPASS). Initialement, le nouveau sera vide. Lorsqu'un utilisateur se connecte, vérifiez si vous avez une entrée pour eux dans votre ancienne base de données de hachage de mot de passe (avec des haubans MD5), et si vous ne trouvez pas d'entrée là-bas, consultez la nouvelle base de données HASH de mot de passe (avec des haubes PHPASS). Si vous trouvez une entrée dans l'ancienne base de données, vous voudrez utiliser MD5 sur HASH et vérifier leur mot de passe. Si c'est correct, vous voudrez avoir un mot de passe ClearText ClearText à l'aide de PHPASS, insérez-le dans la nouvelle base de données HASH de mot de passe et supprimez-les de l'ancienne base de données Hash de mot de passe. Si vous ne trouvez pas d'entrée dans l'ancienne base de données, vous pouvez rechercher une entrée dans la nouvelle base de données et vérifier la validité de leur mot de passe avec PHPASS. Fondamentalement, vous migrez progressivement chaque utilisateur à partir d'un style ancien vers un hachage de style neuf lorsqu'ils se connectent ensuite. Cela a-t-il un sens?


0 commentaires