2

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

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

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

4

4 回答 4

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;
    }
});
<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()完全禁用粘贴。

于 2019-02-14T09:03:34.593 回答
0

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

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

但是您也总是需要验证服务器端的输入!

于 2019-02-14T09:01:33.433 回答
0

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

$(document).ready(function () {
  $('#textnote').keydown(function (e) {
      if (e.keyCode == 61) {
          e.preventDefault();
          return false;
       }
  });
});
于 2019-02-14T09:01:59.910 回答
0

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

<script>
document.getElementById("text_input").addEventListener("keypress", function(event){
  if(event.which==187 || event.keyCode==187){
event.preventDefault();
}
});
</script>
于 2019-02-14T09:03:13.897 回答