我应该防止在密码字段中注入JavaScript吗?

时间:2019-07-08 16:44:30

标签: javascript html javascript-injection html-injections

我找到了很多有关JavaScript注入的信息,但是没有找到关于password字段的任何具体信息。

对于我的测试GMail帐户,我可以设置下一个密码<Script>alert(document.cookie);</script>,它可以正常工作。 enter image description here enter image description here

我应该只将<>编码为它们的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>

1 个答案:

答案 0 :(得分:0)

我使用了下一条建议:

  1. 您应该将密码作为散列存储在数据库中(此处没有JavaScript注入问题)。
  2. 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>