XSS — самая популярная уязвимость в Интернете. Внедрение новых технологий, например. HTML5, CORS, Jinja2… также представляют новые векторы атак. Однако многие люди недооценивают возможности XSS. XSS легко обнаружить, но не так легко смягчить. Итак, на что на самом деле способен XSS:

  1. Украсть пользовательский файл cookie
  2. Получить данные форм, включая токен CSRF
  3. Получить содержимое DOM
  4. Получить локальное/сеансовое хранилище
  5. Зафиксировать нажатую клавишу пользователя
  6. Захват полного DOM
  7. Сделать скриншот страницы
  8. Сделать снимок веб-камеры
  9. и больше"

Чтобы быть скрытным, XHR следует использовать для эксфильтрации данных. В этом случае CORS необходимо настроить в домене злоумышленника, чтобы он разрешал внешний запрос.

Как мы можем предотвратить XSS-атаку:

  1. Использование брандмауэра веб-приложений (WAF): это обычная практика, но ее легко обойти, поскольку она основана на занесении в черный список и использовании регулярных выражений, которые нелегко полностью понять, для установки правил для WAF.
  2. Экранирование/кодирование: принцип Фильтровать ввод, кодировать вывод. Тем не менее, некоторые точки внедрения могут быть упущены разработчиками. Откровенно говоря, это часто случается с крупными веб-сайтами.
  3. Политика безопасности содержимого (CSP): это защита на стороне клиента. У него есть возможность запретить встроенный скрипт и скрипт из домена, не внесенного в белый список. Тем не менее, политика может быть слишком подробной. Некоторые разработчики также не ждут, чтобы отказаться от мощного встроенного скрипта.