我正在建立一个登录系统,当登录时,密码当前从JavaScript发送到PHP文件.
$hash = password_hash($_POST['password'], PASSWORD_BCRYPT);
在使用POST发送密码之前,我应该如何在JavaScript中散列密码?
我显然不想影响BCRYPT的安全性.
解决方法:
在客户端做的事情并不是由你真正控制的.我的意思是,即使您使用哈希密码,客户端也可能在散列/加密之前获取密码.
var password = document.getElementById('login').value;
console.log(password); // It is as simple as it
//hash password...
在一个简单的例子上面解释一下,客户端可以获得这样的密码,或者其他人可以使用XSS攻击来获取密码.您应该尽最大努力保护您的客户免受XSS的侵害,但是您无法控制客户端发生的事情.
如果您担心的是Man In The Middle (MITM)攻击,最重要的是使用具有正确算法的TLS证书(这取决于您服务器的OpenSSL版本).
简而言之,使用HTTPS是您应该采取的措施,以保护您的客户免受MITM攻击.
所以根据我的说法,在发送之前不需要对通道进行散列/加密.