Векторы атаки XSS

Каковы некоторые распространенные XSS-векторы для веб-сайтов, помимо несанкционированного ввода из текстовых полей, попадающих обратно на страницы? Попытка предотвратить злонамеренный доступ к токенам csrf в файлах cookie. Я убираю небезопасные символы из текстового ввода (возможно, в конечном итоге я добавлю это в сервлеты Java перед вставкой базы данных или печатью в пользовательском интерфейсе). Где еще я должен искать вход XSS на сайт?

1 ответ

Решение

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

Вы должны знать о нескольких вещах:

  • Не все пользовательские вводы осуществляются через поля ввода пользовательского интерфейса. Файлы cookie и заголовки запросов также являются примерами пользовательского ввода и, конечно, скрытых полей или параметров json/xml/ любого другого типа. Если ваше приложение обрабатывает какие-либо файлы или получает внешние запросы, кроме http, это тоже ввод пользователя. Даже поля вашей базы данных лучше всего обрабатываются как пользовательский ввод и кодируются при записи их на страницу, особенно если другие компоненты также записывают в базу данных.
  • Возможно, это уже имеет место в вашем приложении, но для того, чтобы сделать этот ответ более всеобъемлющим: XSS - это скорее проблема вывода, независимо от того, откуда поступает пользовательский ввод, решение чаще всего использует кодировку вывода (а не проверку / очистку ввода). само собой, особенно не с черными списками). Хотя могут быть осторожные исключения из этого, и, конечно, проверка входных данных действительно хорошо дополняет правильное кодирование выходных данных.
  • Метод кодирования должен быть выбран в соответствии с контекстом, в котором записываются данные (т. Е. Вам нужно другое кодирование при записи в блок javascript или обычный html; также обратите внимание, что блоки javascript находятся не только внутри тегов сценария, но, например, внутри атрибутов события как онклик и другие).
  • DOM XSS полностью на клиенте и должен быть там смягчен, в Javascript. Смотрите соответствующие руководства OWASP ниже.

Общая страница OWASP XSS очень полезна. У них также есть несколько руководств:

Другие вопросы по тегам