我想在服务器上提交(我有自己的理由,我知道我在做什么之前)在客户端哈希密码。我正在使用jsSHA(它工作,我提醒输出)哈希密码。
我创建了一个新元素,将散列密码分配给它的值并将其附加到表单中。但表格仍未提交。
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsSHA/2.0.2/sha.js"></script>
<form id = "form" name="form" method="post" action="verify.php" class="login">
Username: <input type="text" name="username" style = "width: 350px"><br>
Password: <input type="password" name="pwd" id="pwd" style="width: 350px; margin-left: 3px;"><br>
Remember Me: <input type="checkbox" name="rememberme" value="1"><br>
<input type="submit" name="submit" value="Login!" class="loginbutton" onclick="submitForm();">
</form>
JS
function submitForm(){
var form = document.getElementById("form");
var pwd = document.getElementById('pwd');
var hash = new jsSHA("SHA-256", "TEXT", {numRounds: 1});
hash.update(pwd.value);
var hash = hash.getHash("HEX");
var password = document.createElement("password");
password.name="password";
password.type="hidden";
password.id = "password";
password.value = hash;
form.appendChild(password);
pwd.value = "";
form.submit()
}
发送了参数:
username: user
pwd: ""
rememberme: "1"
submit: "Login!"
我如何password: *some value*
这些发送的参数?我做错了什么?
答案 0 :(得分:2)
您正在使用password
创建input
元素而不是type="password"
元素。浏览器只从他们知道的表单元素(输入,按钮,文本区域等)发送数据。此外,您在元素上设置属性,但在兼容性方面设置属性可能更安全。