Comment crypter un mot de passe sur le client (AngularJS), de l'envoyer au serveur (expressJS) et de décrypter sur le serveur?
Je veux crypter un mot de passe sur le client (angular.js), de l'envoyer au serveur (express.js) et de décrypter sur le serveur. Je voudrais une méthode simple. J'utilise $http pour les requêtes POST.
Je sais que les sorties angulaires-bcrypt bibliothèque et même en nodeJS, mais ne vaut pas pour moi, car il n'a que la méthode de comparaison.
Je veux quelque chose comme ça:
password = document.getElementById('txtPassword').value;
var xorKey = 129; ///you can have other numeric values also.
var result = "";
for (i = 0; i < password.length; ++i) {
result += String.fromCharCode(xorKey ^ password.charCodeAt(i));
}
Mais,je n'ai trouvé que la méthode de décryptage en c#:
public bool Authenticate(string userName, string password)
{
byte result = 0;
StringBuilder inSb = new StringBuilder(password);
StringBuilder outSb = new StringBuilder(password.Length);
char c;
for (int i = 0; i < password.Length; i++)
{
c = inSb[i];
c = (char)(c ^ 129); ///remember to use the same XORkey value you used in javascript
outSb.Append(c);
}
password = outSb.ToString();
//your rest of code
}
Une idée? Je vous remercie beaucoup. 😛
Double Possible de Mot de passe de chiffrement côté client
OriginalL'auteur Izaskun Peña | 2016-05-11
Vous devez vous connecter pour publier un commentaire.
Les mots de passe ne doivent jamais être déchiffré. Ils doivent être hachées avec un cryptage à sens unique. Le serveur doit fournir un pour l'instant afin que le client retourne différentes, mais vérifiable réponse sur chaque connexion.
Tous les mots de passe doit être haché, salé et tendu. Si elle peut être déchiffré, il n'est pas sûr. Voir Grave pour la Sécurité: Comment stocker vos utilisateurs, les mots de passe en toute sécurité.
Mon préféré réponse:
Voir aussi:
Est-il la peine de hachage des mots de passe sur le côté client
Mise à JOUR: Mars 2017:
Envisager d'obtenir un Certificat SSL gratuit avec
https://letsencrypt.org/about/
OriginalL'auteur georgeawg
Le seul moyen sécuritaire de transmettre, de manière sécurisée des données entre le client et le serveur est de sécuriser la connexion avec SSL. Ce que vous êtes essentiellement faire est juste de dissimulation, ce qui peut être renversée.
OriginalL'auteur Joseph
Vous pouvez utiliser le Stanford Javascript Bibliothèque Crypto: https://bitwiseshiftleft.github.io/sjcl/. Il devrait fonctionner pour les deux Angulaire et le Nœud.
Au-delà, votre meilleur pari est de s'assurer que vous utilisez HTTPS pour vos connexions.
OriginalL'auteur MBielski