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

sTg*_*sTg 2 javascript validation antisamy

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

<input type="text"></input>
Run Code Online (Sandbox Code Playgroud)

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

And*_*bie 5

您可以将侦听器附加到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;
    }
});
Run Code Online (Sandbox Code Playgroud)
<input type="text"></input>
Run Code Online (Sandbox Code Playgroud)

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

更新

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

例子:

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

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