在发布然后使用 BCRYPT 之前,我应该如何散列密码?

Koe*_* T. 3 javascript php password-hash

我正在制作一个登录系统,当登录密码时,当前从 JavaScript 发送到一个 PHP 文件。

在 PHP 中,我使用以下代码进行哈希处理。

$hash = password_hash($_POST['password'], PASSWORD_BCRYPT);
Run Code Online (Sandbox Code Playgroud)

在使用 POST 发送密码之前,我应该如何在 JavaScript 中散列密码?

我显然不想影响 BCRYPT 的安全性。

Ant*_*nyB 5

在客户端所做的事情并不是由您真正控制的。我的意思是,即使您对密码进行哈希处理,客户端也有可能在哈希/加密之前获取密码。

var password = document.getElementById('login').value;
console.log(password); // It is as simple as it
//hash password...
Run Code Online (Sandbox Code Playgroud)

上面一个简单的例子来解释一下,客户端可以这样获取密码,或者其他人可以使用XSS攻击获取密码。您应该尽最大努力保护您的客户端免受 XSS 的侵害,但是您无法控制客户端发生的事情。

如果您担心中间人 (MITM)攻击,最重要的是使用具有正确算法的 TLS 证书(这取决于您服务器的 OpenSSL 版本)。
简而言之,您应该使用 HTTPS 来保护您的客户端免受 MITM 攻击。

因此,据我所知,在发送密码之前不需要对其进行散列/加密。