【问题标题】:javascript : How to prevent user from entering = in textbox?javascript:如何防止用户在文本框中输入 =?
【发布时间】:2019-02-14 08:53:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript validation antisamy


    【解决方案1】:

    您可以将侦听器附加到文档中的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;
        }
    });
    &lt;input type="text"&gt;&lt;/input&gt;

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

    更新

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

    例子:

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

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

    【讨论】:

    • 对不起,你说的是文本框,所以我认为你的意思是文本区域。我更新了输入字段的代码。
    • 这工作得很好,除了我们在文本框中复制 paste = 的一种情况。为我的答案+1。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

        • 但我需要为整个应用程序执行活动。添加此 javascript 只会对特定的文本框有所帮助。
        • @sTg 然后将eventListener 附加到每个输入字段。
        猜你喜欢
        • 1970-01-01
        • 2016-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-28
        • 2013-02-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多