我需要提交一个带有密码“哈希”功能的表单。问题是,如何通过哈希值更改密码文本框的初始值以插入数据库?
我理解以下内容。当我单击提交按钮时,表单将文本框的值发送到php文件。特别是,正如我之前所说,我需要的是发送新的哈希密码而不是原始值。
我很抱歉,如果我不是很清楚,但我对此非常生气。
提前谢谢
我正在使用的部分代码是下一个:
...
<input type="password" id="upwd" name="upwd" onChange="validatePassword()">
<input id="submit" type="submit" value="Sign up!" onsubmit="sending()">
...
<script>
...
function sending () {
z = document.getElementById("upwd").value;
upwd = hashCode();
}
function hashCode() {
var hash = 0;
if (z.length === 0) return hash;
for (var i = 0; i < z.length; i++) {
var character = z.charCodeAt(i);
hash = ((hash<<5)-hash)+character;
hash &= hash; // Convert to 32bit integer
}
return hash;
}
</script>
答案 0 :(得分:1)
密码散列在服务器端完成,在您的情况下是PHP脚本。您可以使用PHP函数password_hash()来计算安全的BCrypt哈希值。
如果计算哈希客户端,ManInTheMiddle将看到密码哈希,并可以直接使用它来访问用户帐户。哈希将成为实际密码。
密码哈希是针对攻击者具有对您的数据库的读取权限的情况完成的。在这种情况下,他会看到哈希,但仍然不知道真正的密码。没有真实密码,他就无法使用用户帐户。