JavaScript: Как запретить пользователю вводить = в текстовом поле? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть требование, при котором я должен запретить пользователям вводить = в textbox во всем приложении для предотвращения уязвимости.

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

Я использовал antisamy-1.4.4.xml и XSSFilter.java, которыевыполняет несколько проверок уязвимости, но не проверяет для '=' знака, введенного в textbox.Могу ли я сделать текстовое поле для всего приложения?

Ответы [ 4 ]

0 голосов
/ 14 февраля 2019

Вы можете присоединить слушателя к элементам 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(), чтобы вообще отключить вставку.

0 голосов
/ 14 февраля 2019

сначала вам нужно добавить класс селектора, например, id или класс, затем вам просто нужно добавить этот код js на свою страницу

$(document).ready(function () {
  $('#textnote').keydown(function (e) {
      if (e.keyCode == 61) {
          e.preventDefault();
          return false;
       }
  });
});
0 голосов
/ 14 февраля 2019

Вы должны прослушать событие нажатия клавиши в поле ввода и не нажимать клавишу «=».

<script>
document.getElementById("text_input").addEventListener("keypress", function(event){
  if(event.which==187 || event.keyCode==187){
event.preventDefault();
}
});
</script>
0 голосов
/ 14 февраля 2019

На интерфейсе вы можете использовать JavaScript, чтобы предотвратить это:

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

Но вам всегда нужно проверять ввод и на стороне сервера!

...