J'utilise actuellement le cryptage MD5 pour stocker le mot de passe dans la base de données. Nous n'avions pas la fonctionnalité de réinitialisation de mot de passe avant. Mais maintenant nous l'implémentons. Donc, je ne peux pas décrypter MD5 et envoyer le mot de passe à l'utilisateur. Mais je peux le faire si elle est cryptée en base64. Maintenant, je suis un peu confus qui est la meilleure méthode de cryptage.
J'ai déjà fait la validation côté client pour un mot de passe fort (comme une longueur de 8 caractères, des caractères spéciaux, etc.).Quelle est la meilleure méthode de cryptage base 64 ou MD5?
Répondre
La base 64 n'est pas un mécanisme de cryptage, c'est un schéma de codage. Il est facilement inversé, donc ce n'est pas un bon choix pour protéger les données critiques.
L'approche commune pour les mots de passe est de les hacher avec quelque chose comme MD5, puis de stocker le hachage. Lorsque l'utilisateur se connecte à nouveau, hachez le mot de passe d'entrée et comparez-le au hachage stocké.
Si l'utilisateur oublie son mot de passe, vous ne devriez pas pouvoir lui dire de quoi il s'agit. Au lieu de cela, permettez-lui de le réinitialiser à quelque chose d'autre (probablement quelque chose dont il peut se souvenir).
En outre, comme @Phil Brown mentionne, MD5 is not considered a strong encryption mechanism. SHA-1 serait mieux adapté à cette tâche.
Base 64 Le codage est généralement utilisé pour transmettre des données binaires sur un mécanisme qui n'autorise que le texte ASCII.
L'approche courante pour les mots de passe oubliés est de le réinitialiser, d'envoyer le nouveau mot de passe à l'utilisateur et de le forcer à le changer lors de sa connexion. En outre, SHA1 est un algorithme de hachage plus fort que MD5 – Phil
à ce temps de mot de passe oublié si je peux obtenir le mot de passe une fois de plus? – svk
@vinothkumar: Ce n'est pas le cas. Vous générez aléatoirement un mot de passe complètement nouveau pour eux - pas de leur choix. En outre, une fois qu'ils ont réinitialisé leur mot de passe, je considérerais le verrouillage du compte s'ils ne parviennent pas à changer leur mot de passe après un certain laps de temps, car le courrier électronique est envoyé en texte clair. –
Base64 n'est pas un cryptage, c'est un mécanisme de codage facilement réversible. MD5 est un hachage cryptographique unidirectionnel, bien que son utilisation is not recommended because it is cryptographically weak.
Pour vos besoins, vous voulez probablement stocker le hachage du mot de passe (mieux avec salt), probablement en utilisant SHA-256 ou mieux. Lorsque les utilisateurs oublient leur mot de passe, vous générez un mot de passe à usage unique aléatoire pour eux et vous les forcez à recréer un mot de passe, ou simplement à les faire après avoir vérifié certaines informations d'identification.
Base64 et MD5 sont pas les méthodes de cryptage. Base64 est simplement un moyen de coder les caractères, ce qui ne fournit absolument aucune sécurité - c'est aussi bon que de stocker le mot de passe en texte brut. MD5 est une fonction de hachage, ce qui signifie qu'elle est à sens unique et ne peut pas être déchiffrée.
Hashing est certainement le chemin à parcourir. MD5 est correct, mais vous devriez passer à une fonction plus sécurisée comme SHA-256. Comme pour une fonctionnalité "mot de passe oublié", jamais stocker le mot de passe de l'utilisateur et le renvoyer à eux. Au lieu de cela, générez un mot de passe temporaire (aléatoire) pour eux afin qu'ils puissent se connecter et le modifier.
La meilleure pratique consiste à stocker le hachage de mot de passe en utilisant MD5 comme vous êtes maintenant (ou mieux encore SHA256).
Ne pas effectuer de récupération de mot de passe. Au lieu de cela, lorsqu'un utilisateur oublie son mot de passe, créez un nouveau mot de passe aléatoire et envoyez-le. Ils peuvent ensuite se connecter et définir le mot de passe à quelque chose qu'ils préfèrent. Beaucoup plus sécurisé.
Veuillez lire cette question précédente + réponses: http://stackoverflow.com/questions/2780198/phphow-to-send-the-original-password-to-the-user-wh-he-clicks-forgot-password – Amber
Ne validez pas du côté client, sauf si vous êtes d'accord avec la validation de cette validation. Si quelqu'un écrit un autre client à un moment donné, vous ne voulez pas qu'ils fassent des trous dans votre sécurité. Vous pouvez également faire le contrôle du côté client, mais ce serait uniquement pour éviter un aller-retour. –
Le hachage Md5 n'est pas aussi sécurisé qu'autrefois, utilisez sha1 au moins et sha256 est (d'après ce que je sais) suffisamment sécurisé. – Joakim