Ajax Login: Mot De Passe De Cryptage
Je suis à l'aide de jQuery Ajax pour la connexion d'un utilisateur. Actuellement, je utiliser JS pour saisir les valeurs à partir du nom d'utilisateur et le mot de passe des zones de texte et les envoyer à une page aspx qui vérifie les informations d'identification. Puis, il retourne du JSON permettant à l'utilisateur de savoir s'ils sont connectés ou non. Tout fonctionne bien, mais j'ai remarqué tout à l'aide de Firebug que le mot de passe a été envoyé en texte brut.
Quelle est la meilleure façon de chiffrer le mot de passe? (BTW, je ne suis pas sur un serveur HTTPS)
OriginalL'auteur ScubaSteve | 2011-06-07
Vous devez vous connecter pour publier un commentaire.
Bcrypt pourrait être votre ami. Et il y a aussi une implémentation en Javascript nommé jsBCrypt. Je recommande fortement la lecture de ce perspicace article: Stockage des mots de passe dans inviolable forme.
Mais: attention! Si vous n'utilisez pas le protocole SSL ou un serveur fourni pour l'instant, vous risquez d'être exposé à l'homme dans le milieu des attaques. Si quelqu'un lit le (non chiffré), le trafic entre votre client et le serveur, il obtient le mot de passe crypté. Et c'est assez pour lui de l'utiliser pour s'authentifier auprès du serveur à chaque fois qu'il veut sans connaître le mot de passe réel..
OriginalL'auteur webwurst
vous souhaitez utiliser le protocole https. Notez que même si vous le faites, vous serez toujours à voir en clair les valeurs dans le navigateur, parce que quand firebug saisit les données (que ce soit), il n'a pas été chiffré/déchiffré encore.
Je pense vraiment mordre la balle et la configuration https est le chemin à parcourir. Il est bien-examinés à la technologie. Si vous souhaitez annuler votre propre, sa ne va pas être sécurisé, et vous allez avoir à faire beaucoup de travail sur le client et le serveur.
OriginalL'auteur hvgotcodes
Pourquoi ne pas utiliser sha1 ( http://www.webtoolkit.info/javascript-sha1.html ) et le hachage de mot de passe avant de l'envoyer?
Vous devez stocker les mots de passe hachés dans la base de données. Donc ce sera une bonne pratique, si vous les conservez au texte brut.
Ce n'est pas d'aller travailler dans 99% des cas, parce que MD5/SHA-1 mot de passe en fonction des craquelins sont devenus trop vite. Le chiffrement méthode d'être connu ne devrait jamais être un problème. Il est probablement plus facile pour aller à utiliser le protocole SSL (ou, plus exactement, TLS), surtout depuis que la plupart, si pas tous, d'autres méthodes peuvent vous obliger à re-créer la base de données - en supposant que vous avez fait de hachage des mots de passe, pas de les chiffrer.
OriginalL'auteur nagisa
Il est possible de le faire via Ajax à l'aide de plusieurs outils. J'ai personnellement fait pour la connexion d'une base de données d'application. Malheureusement, je ne sais pas d'une solution unique pour effectuer cette. Et en fin de compte, la meilleure solution est d'utiliser un certificat SSL. Mais j'ai vu des moments où vous avez besoin de se lever une application en toute sécurité avant d'avoir le SSL en place.
Bcrypt est certainement le plus sûr moyen de stocker un mot de passe dans une base de données des utilisateurs, mais cela s'applique à l'arrière-plan, pas tellement de l'Ajax. Si vous utilisez Bcrypt dans le client/navigateur, la chaîne cryptée est encore passés au-dessus de l'internet de façon sécurisée.
La solution que j'ai récemment construit, utilise le cryptage RSA et AES entre le navigateur (en JavaScript) et le serveur (dans mon cas, un ASP.NET site).
Le flux fonctionne comme ceci:
Je souhaite qu'il y ait une solution one-stop pour faire tout cela, mais je suis pas au courant de tout ce temps.
Les bibliothèques que j'ai utilisées sont:
OriginalL'auteur Michael Tanner