我找到了很多有关JavaScript注入的信息,但是没有找到关于password
字段的任何具体信息。
对于我的测试GMail帐户,我可以设置下一个密码<Script>alert(document.cookie);</script>
,它可以正常工作。
我应该只将<
和>
编码为它们的HTML等效语言吗?
如何处理此类密码?
编辑#1:
我将密码作为散列存储在数据库中(这里没有JavaScript注入问题)。
我想为密码可见性添加一个切换开关。
在这种情况下,我应该将<
和>
编码为等效的HTML,就是这样?
编辑#2:
据我了解,对于Password toggle Visibility
来说已经足够了,我可以肯定它可以正常工作(它将防止JavaScript注入)。
<!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>
答案 0 :(得分:0)
我使用了下一条建议:
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>