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