Spec-Zone.ru › HTTP

Защита от межсайтовых скриптов (XSS)

Защита от межсайтовых скриптов (XSS)

Нестандартный: Эта функция нестандартна и не соответствует стандартам. Не используйте её на производственных сайтах, обращённых в веб: она не будет работать для всех пользователей. Также могут быть значительные различия в реализации, а поведение может измениться в будущем.

Заголовок ответа HTTP X-XSS-Protection — функция Internet Explorer, Chrome и Safari, которая останавливает загрузку страниц при обнаружении атак типа межсайтового скриптинга (XSS). Эти защиты в основном не нужны в современных браузерах, когда сайты реализуют сильную Content-Security-Policy, которая отключает использование встроенного JavaScript ('unsafe-inline').

Предупреждение: Даже если эта функция может защитить пользователей старых веб-браузеров, которые ещё не поддерживают CSP, в некоторых случаях защита от XSS может создавать уязвимости XSS на в остальном безопасных сайтах. Более подробную информацию см. в разделе ниже.

Примечание:

  • Chrome убрал свой XSS-аудитор
  • Firefox не, и не будет реализовывать X-XSS-Protection
  • Edge снял свой фильтр XSS

Это означает, что если вам не нужно поддерживать устаревшие браузеры, рекомендуется использовать Content-Security-Policy без разрешения unsafe-inline скриптов вместо этого.

Тип заголовка Заголовок ответа
Запрещённое имя заголовка нет

Синтаксис

X-XSS-Protection: 0
X-XSS-Protection: 1
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report=<reporting-uri>
0

Отключает фильтрацию XSS.

1

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

1; mode=block

Включает фильтрацию XSS. Вместо очистки страницы, браузер не отобразит страницу, если будет обнаружена атака.

1; report=<reporting-URI> (только Chromium)

Включает фильтрацию XSS. При обнаружении атаки межсайтового скриптинга браузер очистит страницу и сообщит об нарушении. Это использует функциональность директивы CSP report-uri для отправки отчёта.

Уязвимости, вызванные фильтрацией XSS

Рассмотрим следующий фрагмент HTML-кода для веб-страницы:

<script>
  var productionMode = true;
</script>
<!-- [...] -->
<script>
  if (!window.productionMode) {
    // Some vulnerable debug code
  }
</script>

Этот код полностью безопасен, если браузер не выполняет фильтрацию XSS. Однако, если он это делает, и запрос поиска — ?something=%3Cscript%3Evar%20productionMode%20%3D%20true%3B%3C%2Fscript%3E, браузер может выполнить скрипты на странице, игнорируя <script>var productionMode = true;</script> (думает, что сервер включил это в ответ, потому что это было в URI), вызвав window.productionMode, которое будет вычислено как undefined и выполнить небезопасный отладочный код.

Установка заголовка X-XSS-Protection в 0 или 1; mode=block предотвращает уязвимости, подобные описанной выше. Первый вариант заставит браузер выполнить все скрипты, а второй — предотвратит обработку страницы вообще (хотя этот подход может быть уязвим к атакам по побочным каналам, если сайт встраивается в <iframe>).

Пример

Блокировать загрузку страниц при обнаружении атак XSS:

X-XSS-Protection: 1; mode=block

PHP

header("X-XSS-Protection: 1; mode=block");

Apache (.htaccess)

<IfModule mod_headers.c>
  Header set X-XSS-Protection "1; mode=block"
</IfModule>

Nginx

add_header "X-XSS-Protection" "1; mode=block";

Спецификации

Не входит в какие-либо спецификации или черновики.

Совместимость с браузерами

Рабочий стол Мобильный
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet
X-XSS-Protection
4-78
12-17
Нет
8
Да-65
Да
Нет
Да-78
Нет
Да-56
Да
Да-12.0

См. также

  • Content-Security-Policy
  • Управление фильтром XSS — Microsoft
  • Понимание XSS Аудитора — Virtue Security
  • Непонятая защита от XSS X-XSS-Protection — blog.innerht.ml

© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API