Récupération du mot de passe lorsque le mot de passe est stocké sous forme de valeur de hachage

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

Question

Les utilisateurs peuvent-ils demander que leur mot de passe leur soit envoyé par courrier électronique s'ils sont stockés sous forme de valeur de hachage?

Existe-t-il un moyen de convertir une valeur de hachage en texte clair avec les informations appropriées (& quelles informations auriez-vous besoin)?

Si un utilisateur a la même valeur de hachage de mot de passe stockée sur deux sites, son mot de passe sera-t-il le même pour les deux sites?

Était-ce utile?

La solution

Si vous ne stockez qu'un hachage du mot de passe, alors non. ... et vous ne devriez de toute façon que stocker un hachage correctement salé de leur mot de passe.

Les mécanismes de réinitialisation de mot de passe constituent l'alternative appropriée.

Autres conseils

Les mots de passe hachés ne peuvent pas être récupérés en général (cela dépend de la fonction de hachage, les hachages sécurisés ne peuvent pas être récupérés). S'ils ont le même hachage sur deux sites, ils pourraient avoir le même mot de passe. Cela dépend du sel de hachage utilisé par les sites, de la méthode, etc.

.

Si votre mot de passe est stocké de manière sécurisée dans un bon système de hachage, un fournisseur ne devrait jamais pouvoir vous envoyer votre mot de passe par courrier électronique. Vous devez réinitialiser votre mot de passe si vous l'oubliez.

En bref, non. Avec la plupart des algorithmes de hachage, vous pouvez avoir plusieurs entrées avec la même sortie. Il est souvent préférable d’offrir une option de réinitialisation du mot de passe.

Il existe différents types d’algorithmes de hachage. Certains sont plus sécurisés que d'autres. MD5 est populaire, mais peu sûr. La famille SHA est un autre ensemble d’algorithmes plus sûrs.

Par définition, un hachage est une fonction à sens unique. Il ne peut pas être inversé.

http://fr.wikipedia.org/wiki/Sha-1

S'il existait un moyen simple de récupérer le mot de passe en texte clair, il serait inutile de commencer par hacher les mots de passe. À ce stade, vous pourriez aussi bien vous baser sur base64 ou ROT13. (ne fais pas ça!)

Comme d'autres l'ont mentionné, utilisez d'autres méthodes de récupération de mot de passe. Il n’ya vraiment jamais de bonne raison d’avoir accès aux mots de passe en clair.

Si le hachage sur deux sites est identique, l'utilisateur a probablement le même mot de passe pour les deux. Ce n'est pas garanti à 100%, cependant, il pourrait y avoir une collision de hachage, mais c'est extrêmement improbable.

Il n’ya aucun moyen d’inverser les hachages couramment utilisés. Ils peuvent être forcés (en essayant tous les mots de passe possibles) ou vous pouvez utiliser une liste de mots (en utilisant une liste de mots de passe couramment utilisés) en combinaison pour accélérer brutalement, mais il s’agit toujours d’un processus très lent et gourmand en ressources CPU. / p>

La meilleure façon, utilisée par de nombreux sites, de créer un " Réinitialisation du mot de passe " bouton où vous entrez votre nom d'utilisateur et votre email, et s'ils correspondent, il vous envoie un mot de passe aléatoire et vous donne un lien vers la page de connexion. Vous pouvez vous connecter avec votre mot de passe aléatoire et changer de mot de passe.

Pour ce faire, vous devez avoir un modèle avec les champs:

Hashed_password
Salt

Et vous devez connaître l’utilisateur de la méthode pour hacher le mot de passe (ici j’utilise SHA1) Ensuite, vous pouvez définir dans votre contrôleur:

def self.encrypted_password(password, salt)
   string_to_hash = password + "wibble" + salt
   Digest::SHA1.hexdigest(string_to_hash)
end

Ensuite, vous pouvez comparer:

user.Hashed_password == encrypted_password(password, user.salt)

Vrai signifie que " mot de passe " est le mot de passe de l'utilisateur "utilisateur"

L'idée générale derrière le stockage d'un hachage de mot de passe est de garantir la sécurité des mots de passe, même de la part de ceux qui ont accès à la base de données. La confiance n'est jamais implicite. Un hachage est un algorithme à sens unique, il est donc impossible de dériver le mot de passe d'origine à partir d'un hashcode. Habituellement, lorsqu'un utilisateur doit récupérer son mot de passe stocké sous forme de hachage, vous devez lui poser sa question secrète et lui envoyer par courrier électronique son mot de passe temporaire ou un lien temporaire lui permettant de modifier son mot de passe. Cela garantit que le mot de passe n'est jamais stocké en texte clair et qu'il est protégé de tous les regards indiscrets, même de ceux qui pourraient être considérés comme dignes de confiance.

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