2009-12-26 11 views
21

J'ai une boîte de dialogue jquery boîte de dialogue pop-up pour se connecter à mon site Web. Lorsqu'un utilisateur clique se connecter, il fait une demande de poste à un fichier login.php comme suit:Comment utiliser MD5 en javascript pour transmettre un mot de passe

$.post(
     'includes/login.php', 
     { user: username, pass: password }, 
     onLogin, 
     'json'); 

Comment puis-je faire une md5 sur ce mot de passe avant de le mettre dans la demande de poste? En outre, j'ai les mots de passe de l'utilisateur stockés dans une base de données MySQL en utilisant MD5(), donc je voudrais juste comparer la version stockée du mot de passe avec le MD5 du mot de passe soumis. Merci à tous ceux qui répondent.

+13

Une meilleure utilisation de SSL pour sécuriser votre connexion. – Gumbo

+0

D'accord avec Gumbo. Ensuite, sur le côté serveur, utilisez SHA256 – AntonioCS

+2

J'ai activé le protocole SSL, mais j'aimerais que le mot de passe soit crypté dans l'en-tête HTTP chiffré. – adhanlon

Répondre

27

crypto-js est une bibliothèque javascript riche contenant de nombreux algorithmes de cryptographie.

Tout ce que vous avez à faire est d'appeler CryptoJS.MD5(password)

$.post(
    'includes/login.php', 
    { user: username, pass: CryptoJS.MD5(password) }, 
    onLogin, 
    'json'); 
+12

Ce plugin n'est plus disponible pour une raison quelconque. Il existe une version ici: http://www.richardpeacock.com/dev/files/jquery.md5.js.txt – Rob

+5

Vous devriez probablement utiliser le http://code.google.com/p/crypto- beaucoup plus standard js/crypto-js et incluez les JS pour le crypto dont vous avez besoin. –

+2

Je pense que cette réponse a besoin d'attention et d'attention étant donné que le plugin lié semble être indisponible maintenant. – Kev

4

Vous pouvez consulter cette page: http://pajhome.org.uk/crypt/md5/

Toutefois, si la protection du mot de passe est important, vous devriez vraiment utiliser quelque chose comme SHA256 (MD5 est pas sécurisé cryptographiquement IIRC). Plus encore, vous pouvez envisager d'utiliser TLS et obtenir un certificat pour pouvoir utiliser https.

+0

Merci pour la réponse, j'utilise https pour mon site Web, mais pour une raison quelconque apache utilise le cryptage lors de la transmission de la page, mais après que la page a été chargée utilise encore https, mais la page n'est pas cryptée. Pensez-vous qu'il va encore crypter les informations de connexion quand il est soumis? – adhanlon

+0

Je ne suis pas un expert, mais vous pouvez essayer de renifler des paquets sur une machine de test pour voir si elle est cryptée ou non. – SapphireSun

26

Si quelqu'un est reniflant votre trafic HTTP texte brut (ou cache/cookies) pour les mots de passe simplement en tournant le mot de passe dans un hachage ne va pas aider - Le mot de passe de hachage peut être «rejoué» aussi bien que du texte brut. Le client aurait besoin de hachage du mot de passe quelque chose un peu au hasard (comme la date et l'heure) Voir la section « AUTH CRAM-MD5 » ici: http://www.fehcom.de/qmail/smtpauth.html

+4

+1 à la seule réponse qui explique que ce n'est pas sécurisé. – Pablo

+0

Il est sécurisé si vous utilisez SSL et la question ne dit pas que ce n'est pas le cas. – malthe

+0

@malthe L'authentification de base est sécurisée en utilisant SSL – Motes

2

En réponse à Jt. Vous avez raison, le code HTML avec juste le mot de passe est sensible à l'attaque de l'homme au milieu. Cependant, vous pouvez les semences avec un GUID du serveur ...

$.post(
    'includes/login.php', 
    { user: username, pass: $.md5(password + GUID) }, 
    onLogin, 
    'json'); 

Cela irait à l'encontre de l'Homme-In-The milieu ... en ce que le serveur générerait un nouveau GUID pour chaque tentative.

+2

oui, c'est une bonne idée. Ce genre d'approche de défi/réponse est également couvert dans http://pajhome.org.uk/crypt/md5/auth.html – Menace

15

Je vous suggère d'utiliser CryptoJS dans ce cas. Fondamentalement, CryptoJS est une collection croissante d'algorithmes cryptographiques standard et sécurisés implémentés en JavaScript en utilisant les meilleures pratiques et les modèles. Ils sont rapides, et ils ont une interface cohérente et simple.

Donc, si vous voulez calculer hachage (MD5) de votre chaîne de mot de passe, procédez comme suit:

<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/md5.js"></script> 
<script> 
    var passhash = CryptoJS.MD5(password).toString(); 

    $.post(
     'includes/login.php', 
     { user: username, pass: passhash }, 
     onLogin, 
     'json'); 
</script> 

Donc, ce script poster hachage votre chaîne de mot de passe au serveur.

Pour plus d'information et de soutien sur d'autres algorithmes de hachage calcul, vous pouvez visiter à:

http://code.google.com/p/crypto-js/

+0

bien répondu :) –

+0

Merci pour cette réponse ... pour ceux qui recherchent le cryptage/décryptage entre JavaScript et C#/VB.NET pour javascript recommandé est cette réponse et vous pouvez également vouloir regarder cela http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5(v=vs .110) .aspx pour C# –

Questions connexes