我应该防止 JavaScript 在密码字段中注入吗?
Should I prevent JavaScript injections in password field?
我找到了很多关于 JavaScript 注入的信息,但没有找到任何关于 password
字段的具体信息。
对于我的测试 GMail 帐户,我能够设置下一个密码 <Script>alert(document.cookie);</script>
并且它可以正常工作。
我是否应该将 <
和 >
编码为它们的 HTML 等价物?
如何处理此类密码?
编辑#1:
我将密码作为哈希值存储在数据库中(这里 JavaScript 注入没有问题)。
我想为密码可见性添加一个切换。
在这种情况下,我应该将 <
和 >
编码为它们的 HTML 等价物,仅此而已?
我用了下建议:
- 您应该将密码作为散列存储在数据库中(这里的 JavaScript 注入没有问题)。
对于 Password toggle Visibility
:
2.1 如果它是用普通 <input>
实现的,你不需要做任何事情(这里没有 JavaScript 注入)。
2.2 如果它是用 <span>
、<div>
等实现的,那么你必须对它进行 HTML 编码(注意你还必须担心 &
个字符).
<!DOCTYPE html>
<html>
<body>
Password: <input type="password" value="<Script>alert(document.cookie);</script>" id="myInput"><br><br>
<input type="checkbox" onclick="showPasswd()">Show Password
<script>
function showPasswd() {
var x = document.getElementById("myInput");
if (x.type === "password") {
x.type = "text";
} else {
x.type = "password";
}
}
</script>
</body>
</html>
我找到了很多关于 JavaScript 注入的信息,但没有找到任何关于 password
字段的具体信息。
对于我的测试 GMail 帐户,我能够设置下一个密码 <Script>alert(document.cookie);</script>
并且它可以正常工作。
我是否应该将 <
和 >
编码为它们的 HTML 等价物?
如何处理此类密码?
编辑#1:
我将密码作为哈希值存储在数据库中(这里 JavaScript 注入没有问题)。
我想为密码可见性添加一个切换。
在这种情况下,我应该将 <
和 >
编码为它们的 HTML 等价物,仅此而已?
我用了下建议:
- 您应该将密码作为散列存储在数据库中(这里的 JavaScript 注入没有问题)。
对于
Password toggle Visibility
:2.1 如果它是用普通
<input>
实现的,你不需要做任何事情(这里没有 JavaScript 注入)。2.2 如果它是用
<span>
、<div>
等实现的,那么你必须对它进行 HTML 编码(注意你还必须担心&
个字符).
<!DOCTYPE html>
<html>
<body>
Password: <input type="password" value="<Script>alert(document.cookie);</script>" id="myInput"><br><br>
<input type="checkbox" onclick="showPasswd()">Show Password
<script>
function showPasswd() {
var x = document.getElementById("myInput");
if (x.type === "password") {
x.type = "text";
} else {
x.type = "password";
}
}
</script>
</body>
</html>