Проверка обычного текстового поля для защиты от атаки XSS - PullRequest
0 голосов
/ 02 июля 2019

В нашем приложении есть несколько простых текстовых полей, которые мы пытаемся защитить от XSS.Например, поле комментария для пользователей, чтобы прокомментировать сообщение, которое является простым полем.От пользователя не требуется возможность изменять форматирование, но он должен иметь возможность писать что-либо в виде простого текста, включая разные языки, специальные символы, такие как @, &, ', *, и т. Д. Мы также в порядке, не позволяя "<"и"> ".

Итак, с учетом этого, будет ли достаточно, если я проверю входную строку на стороне сервера (Java) и провалю проверку, должен ли пользователь использовать"> "или" <"?будет ли это представлять какие-либо проблемы безопасности или ограничения?</p>

public boolean isValid(String value) {
  if (value == null) {
    return true;
  }
  // Setting an arbitrary large number (should be enough for any article/text)
  if (value.length() > 50000) {
    return false;
  }

  return !value.contains(">") && !value.contains("<");
}

1 Ответ

0 голосов
/ 02 июля 2019

Проверка ввода не является достаточной защитой от XSS в целом. В вопросе недостаточно подробностей, чтобы сказать, можно ли его использовать в данном конкретном случае, но в любом случае полагаться только на проверку входных данных не очень хорошая идея.

Если вы планируете реализовать это как общую меру для XSS для нескольких представлений в приложении, это почти наверняка приведет к ошибке.

Рассмотрим ввод, например " onclick="alert(1)" x=" или javascript:alert(1) для href и т. Д. И мы даже не упомянули окончательный случай шаблонов представления с <script> var myvar = {{variable}}; </script> и подобными. Это бесконечная банка червей.

Единственный способ действительно предотвратить XSS - это реализовать правильную кодировку вывода в соответствии с контекстом вывод записывается в (html, attribute, javascript и т. Д.). Даже в этом случае вам все равно нужно быть осторожным с javascript: и прочее, записанное непосредственно в контекст Javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...