Заголовки: X-XSS-Protection
Заголовок X-XSS-Protection
Нестандартный: Эта функция не стандартизирована. Мы не рекомендуем использовать нестандартные функции в production, поскольку их поддержка в браузерах ограничена, а сами функции могут измениться или быть удалены. Однако в определённых случаях они могут стать подходящей альтернативой, если стандартного варианта не существует.
Устарело: Эта функция больше не рекомендуется. Некоторые браузеры всё ещё могут её поддерживать, но она уже могла быть удалена из соответствующих веб-стандартов, может находиться в процессе удаления или сохраняться только для обеспечения совместимости. Избегайте её использования и, если возможно, обновите существующий код; при принятии решения воспользуйтесь таблицей совместимости внизу этой страницы. Учтите, что эта функция может перестать работать в любой момент.
Предупреждение: Хотя эта функция может защитить пользователей старых браузеров, не поддерживающих CSP, в некоторых случаях X-XSS-Protection может создавать уязвимости XSS даже на безопасных сайтах. Подробнее см. в разделе «Вопросы безопасности» ниже.
HTTP-заголовок X-XSS-Protection — это заголовок ответа, который использовался в Internet Explorer, Chrome и Safari для блокировки загрузки страниц при обнаружении отражённых атак межсайтового скриптинга (XSS). В современных браузерах такая защита в основном не нужна, если сайты используют строгую политику Content-Security-Policy, запрещающую использование встроенного JavaScript ('unsafe-inline').
Вместо фильтрации XSS рекомендуется использовать Content-Security-Policy.
| Тип заголовка | Заголовок ответа |
|---|
Синтаксис
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. Если обнаружена атака межсайтового скриптинга, браузер очистит страницу и сообщит о нарушении. Для отправки отчёта используется функциональность директивы
report-uriполитики CSP.
Вопросы безопасности
>Уязвимости, вызванные фильтрацией 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 | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
X-XSS-Protection |
4–78 | 12–17 | Нет | 15–65 | 5–15.4 | 18–78 | Нет | 14–56 | 4.2–15.4 | 1.0–12.0 | Нет | 4.2–15.4 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-XSS-Protection