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

javascript : How to prevent user from entering = in textbox?

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

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

我一直在使用 antisamy-1.4.4.xmlXSSFilter.java,它们负责很多漏洞检查,但 不检查 '=' 标志输入 textbox。无论如何我可以为整个应用程序完成的文本框做些什么?

前端,您可以使用JavaScript来防止:

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

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

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

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

你应该监听输入框的按键事件,防止'='键。

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

您可以将侦听器附加到文档中的 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>

但我不会将此视为 "secure",因为用户可以在其浏览器中覆盖 JS 行为。您仍然应该清理服务器端的输入。

更新

要处理用户 将某些内容粘贴 input 字段中的情况,您可以拦截粘贴的字符串并删除非法字符(在这种情况下为等号).

示例:

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

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