【发布时间】:2017-07-30 14:52:45
【问题描述】:
有一个 passport.js 实现被用于LDAP-auth,它可以工作。现在下一步是在客户端使用Crypto-js 加密密码,如下所示:
Client-side angular-js controller
$scope.authenticate = function () {
var auth = new login();
auth.username = $scope.username;
auth.password = CryptoJS.AES.encrypt($scope.password); //// HERE
auth.$save(function (response){
console.log(response);
},function(err){
console.log(err);
});
}
Server-side service
.....
.....
app.post('/login', passport.authenticate('ldapauth'), (req, res) => {
console.log("req.user: ",req.user);
req.session.username = req.user[ldap.username];
req.session.userModel = req.user;
res.status(200).send({"success": 'success'});
});
.....
在使用请求“req”调用passport.authenticate 之前,在服务器端服务上,需要对aes 加密密码进行解密。如何在这里实施? (问题不在于加密,而是如何在将数据传递给 passport.authenticate 之前获取数据)
【问题讨论】:
-
我不确定您要在这里做什么,但 SHA1 是哈希函数,而不是加密。它不能被“解密”。
-
为什么不使用HTTPS(SSL)来加密服务器-客户端之间的通信?
-
@estus - 这个想法是让任何形式的暴力攻击变慢,并保持密码不被计算机检测到。该网络通过 https 进行加密,我不必关心这一点。我只想让密码远离客户端的肉眼。
-
哈希无法解密。发送哈希假设它存储在数据库中,原始密码永远不会出现在任何地方。
-
当其他事情都做对了,它不会让任何事情变得更安全。而且您应该知道自己在做什么非常好,因为破坏安全性比加强安全性要容易得多。而且我不认为没有盐的 SHA1 会有任何用处。
标签: javascript angularjs node.js passport.js cryptojs