javascript:如何防止用户在文本框中输入=?

时间:2019-02-14 08:53:34

标签: javascript validation antisamy

我有一个要求,我必须阻止用户在整个应用程序的=中输入textbox,以防止漏洞。

<input type="text"></input>

我一直在使用antisamy-1.4.4.xmlXSSFilter.java来处理许多漏洞检查,但是不会对'='符号进行检查 }}。无论如何,我可以为整个应用程序完成的文本框做什么?

4 个答案:

答案 0 :(得分:4)

您可以将侦听器附加到文档中的input元素上,检查用户是否按下了=键,如果有,请采取措施。

类似的事情应该起作用:

const textInput = document.querySelector('input');
textInput.addEventListener("keydown", function(event) {
    if (event.keyCode === 187) {
    	console.log("equals pressed");
        // Prevent default behaviour
        event.preventDefault();
        return false;
    }
});
<input type="text"></input>

但是我不会把它当作“安全的”,因为用户可以在其浏览器中覆盖JS行为。您仍然应该清理服务器端的输入。

更新

要处理用户粘贴input字段中的情况,您可以截取粘贴的字符串并去除非法字符(在这种情况下为等号)。

示例:

textInput.onpaste = function(e) {
    e.preventDefault();
    clipboardData = e.clipboardData;
  pastedData = clipboardData.getData('Text');
  textInput.value = pastedData.replace("=", "");
}

或者您也可以e.preventDefault()完全禁用粘贴。

答案 1 :(得分:0)

前端上,您可以使用JavaScript防止出现这种情况:

document.getElementById('text').onkeydown = function(e) {
  const code = e.which || e.keyCode;
  if (code === 187) {
    e.preventDefault();
  }
}
<input type="text" id="text">

但是,您始终还需要在服务器端验证输入!

答案 2 :(得分:0)

首先,您需要添加选择器类(例如id或class),然后只需将此js代码添加到您的页面中

$(document).ready(function () {
  $('#textnote').keydown(function (e) {
      if (e.keyCode == 61) {
          e.preventDefault();
          return false;
       }
  });
});

答案 3 :(得分:0)

您应该侦听输入字段的按键事件,并防止使用'='键。     

<script>
document.getElementById("text_input").addEventListener("keypress", function(event){
  if(event.which==187 || event.keyCode==187){
event.preventDefault();
}
});
</script>