Что такое http-заголовок "X-XSS-Protection"?

Так что я сейчас играю с HTTP для развлечения в telnet (то есть просто набираю telnet google.com 80 и вставляю случайные GET и POST с разными заголовками и т.п.), Но я наткнулся на то, что google.com передает в нем заголовки, которые я не знаю.

Я просматривал http://www.w3.org/Protocols/rfc2616/rfc2616.html и не нашел определения для этого конкретного http-заголовка, который, похоже, выдает Google:

GET / HTTP/1.1

HTTP/1.1 200 OK
Date: Wed, 01 Feb 2012 03:42:24 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=6ddbc0a0342e7e63:FF=0:TM=1328067744:LM=1328067744:S=4d4farvCGl5Ww0C3; expires=Fri, 31-Jan-2014 03:42:24 GMT; path=/; domain=.google.com
Set-Cookie: NID=56=PgRwCKa8EltKnHS5clbFuhwyWsd3cPXiV1-iXzgyKsiy5RKXEKbg89gWWpjzYZjLPWTKrCWhOUhdInOlYU56LOb2W7XpC7uBnKAjMbxQSBw1UIprzw2BFK5dnaY7PRji; expires=Thu, 02-Aug-2012 03:42:24 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked

1000

Кто-нибудь знает, что такое X-XSS-Protection?

Ответ 1

X-XSS-Protection - это HTTP-заголовок, понятный Internet Explorer 8 (и более новые версии). Этот заголовок позволяет доменам включать и выключать "Фильтр XSS" IE8, который предотвращает некоторые категории атак XSS. IE8 активирует фильтр по умолчанию, но серверы могут переключаться, если отключить, установив

   X-XSS-Protection: 0

См. также http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx

Ответ 2

  • X-XSS-Protection: 1: принудительная защита XSS (полезно, если защита XSS была отключена пользователем)

  • X-XSS-Protection: 0: отключить защиту XSS

  • Токен mode=block не позволит браузеру (IE8+ и браузерам Webkit) отображать страницы (вместо очистки), если обнаружена потенциальная атака с отражением XSS (= непостоянная).

/!\Предупреждение, mode=block создает уязвимость в IE8 (дополнительная информация).

Больше информации: http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx и http://blog.veracode.com/2014/03/guidelines-for-setting-security-headers/

Ответ 3

Этот заголовок ответа можно использовать для настройки пользовательского агента, встроенного в отражающую защиту XSS. В настоящее время этот заголовок поддерживают только Microsoft Internet Explorer, Google Chrome и Safari (WebKit).

В Internet Explorer 8 включена новая функция, помогающая предотвратить отраженные межсайтовые скриптовые атаки, известная как XSS Filter. Этот фильтр работает по умолчанию в зонах безопасности "Интернет", "Доверенная" и "Ограниченная". Страницы зоны локальной интрасети могут подключиться к защите с использованием того же заголовка.

О заголовке, который вы разместили в своем вопросе,

Заголовок X-XSS-Protection: 1; mode=block включает фильтр XSS. Вместо того, чтобы дезинфицировать страницу, при обнаружении атаки XSS браузер предотвращает рендеринг страницы.

В марте 2010 года мы добавили в IE8 поддержку нового токена в Заголовок X-XSS-Protection, mode = block.

X-XSS-Protection: 1; mode=block

Когда этот токен присутствует, если потенциальная атака XSS Reflection Обнаруженный, Internet Explorer предотвратит рендеринг страницы. Вместо того, чтобы пытаться продезинфицировать страницу, чтобы хирургически удалить XSS атака, IE будет отображать только "#".

Internet Explorer распознает возможную межсайтовую скриптовую атаку. Он регистрирует событие и отображает соответствующее сообщение для пользователя. Статья MSDN описывает, как работает этот заголовок.

Как этот фильтр работает в IE,

Подробнее об этой статье, https://blogs.msdn.microsoft.com/ie/2008/07/02/ie8-security-part-iv-the-xss-filter/

Фильтр XSS работает как компонент IE8 с видимостью для всех запросы/ответы, проходящие через браузер. Когда фильтр обнаруживает вероятный XSS в межсайтовом запросе, идентифицирует и нейтрализует атаку, если она повторяется в ответе сервера. пользователей не представлены вопросы, на которые они не могут ответить - просто IE блокирует выполнение вредоносного скрипта.

С новым XSS-фильтром пользователи IE8 Beta 2 сталкиваются с XSS типа 1 атака увидит уведомление, подобное следующему:

IE8 XSS Attack Notification

Страница была изменена, и атака XSS заблокирована.

В этом случае XSS-фильтр определил межсайтовый скриптинг атака в URL. Он нейтрализовал эту атаку как сценарий был воспроизведен обратно на страницу ответа. Таким образом, фильтр эффективен без изменения начального запроса к серверу или блокирование всего ответа.

Событие фильтра межсайтовых сценариев регистрируется, когда Windows Internet Explorer 8 обнаруживает и смягчает атаку межсайтового скриптинга (XSS). Межсайтовые скриптовые атаки происходят, когда один сайт, как правило, злонамеренный, внедряет (добавляет) код JavaScript в иные законные запросы на другой сайт. Исходный запрос обычно невинный, такой как ссылка на другую страницу или общий интерфейс шлюза (CGI) скрипт, предоставляющий общую услугу (такую как гостевая книга). Внедренный скрипт обычно пытается получить доступ к привилегированной информации или услуги, которые второй сайт не собирается предоставлять. ответ или запрос обычно отражают результаты вредоносный сайт. Фильтр XSS, новая функция для Internet Explorer 8, обнаруживает JavaScript в запросах URL и HTTP POST. Если JavaScript Обнаружен, фильтр XSS ищет доказательства отражения, информацию который будет возвращен на сайт атакующего, если атакующий Запрос был представлен без изменений. Если отражение обнаружено, XSS Фильтр очищает исходный запрос, чтобы дополнительный JavaScript не может быть выполнен. Фильтр XSS затем регистрирует это действие как событие межсайтового фильтра сценариев. На следующем рисунке показан пример сайта, который был изменен для предотвращения атаки межсайтовых скриптов.

Источник: https://msdn.microsoft.com/en-us/library/dd565647(v=vs.85).aspx

Веб-разработчики могут захотеть отключить фильтр для своего контента. Они могут сделать это, установив заголовок HTTP:

X-XSS-Protection: 0

Подробнее о заголовках безопасности в

Ответ 4

Вы можете увидеть в этом списке полезных заголовков HTTP.

X-XSS-Protection: Этот заголовок включает фильтр межсайтовых сценариев (XSS), встроенный в самые последние веб-браузеры. В любом случае он обычно включен по умолчанию, поэтому роль этого заголовка заключается в том, чтобы повторно включить фильтр для этого конкретного веб-сайта, если он был отключен пользователем. Этот заголовок поддерживается в IE 8+ и в Chrome (не уверен, какие версии). Фильтр анти-XSS был добавлен в Chrome 4. Неизвестно, учитывает ли эта версия этот заголовок.

Ответ 5

TL; DR: Все хорошо написанные веб-сайты (/apps) должны испускать заголовок X-XSS-Protection: 0 и просто забыть об этой функции. Если вы хотите иметь дополнительную безопасность, которую могут обеспечить лучшие пользовательские агенты, используйте строгий заголовок Content-Security-Policy.

Длинный ответ:

HTTP-заголовок X-XSS-Protection - это одна из тех вещей, которые Microsoft представила в Internet Explorer 8.0 (MSIE 8), которая должна была повысить безопасность неправильно написанных веб-сайтов.

Идея состоит в том, чтобы применить некоторую эвристику, чтобы попытаться обнаружить отражение XSS-атаки и автоматически нейтрализовать атаку.

Проблемная часть этого - "эвристика" и "стерилизация". Эвристика вызывает ложные срабатывания, и стерилизация не может быть безопасно выполнена, поскольку она вызывает побочные эффекты, которые можно использовать для реализации атак XSS и DoS на совершенно безопасных веб-сайтах.

Плохо то, что если веб-сайт не отправляет заголовок X-XSS-Protection, то браузер будет вести себя так, как если бы заголовок X-XSS-Protection: 1 был выпущен. Хуже всего то, что это значение является наименее безопасным значением из всех возможных значений для этого заголовка!

Для данного защищенного веб-сайта (то есть на сайте нет отражений XSS-уязвимостей) эта функция "XSS-защиты" допускает следующие атаки:

X-XSS-Protection: 1 позволяет злоумышленнику выборочно блокировать части JavaScript и поддерживать работу остальных сценариев. Это возможно, потому что эвристика этой функции просто "если значение какого-либо параметра GET найдено в части сценария источника страницы, сценарий будет автоматически изменен зависимым от агента пользователя способом". На практике злоумышленник может, например, добавьте параметр disablexss=<script src="framebuster.js", и браузер автоматически удалит строку <script src="framebuster.js" из фактического источника страницы. Обратите внимание, что остальная часть страницы продолжает работать, и злоумышленник только что удалил эту часть безопасности страницы. На практике любой JS в исходном коде страницы может быть изменен. В некоторых случаях страница без уязвимости XSS, имеющая отраженный контент, может использоваться для запуска выбранного JavaScript на странице из-за неправильного преобразования данных в виде обычного текста в исполняемый код JavaScript.

X-XSS-Protection: 1; mode=block позволяет злоумышленнику получать данные из источника страницы, используя поведение страницы в качестве побочного канала. Например, если страница содержит код JavaScript в соответствии с var csrf_secret="521231347843", злоумышленник просто добавляет дополнительный параметр, например, leak=var%20csrf_secret="3 и если страница НЕ заблокирована, 3 была неправильной первой цифрой. Атакующий пытается снова, на этот раз leak=var%20csrf_secret="5 и загрузка страницы будет прервана. Это позволяет злоумышленнику узнать, что первая цифра секрета - 5. Затем злоумышленник продолжает угадывать следующую цифру.

В конце концов, если ваш сайт полон атак отражением XSS, использование значения по умолчанию 1 немного уменьшит поверхность атаки. Однако, если ваш сайт защищен и вы не излучаете X-XSS-Protection: 0, ваш сайт будет уязвим любым браузером, который поддерживает эту функцию. Если вам нужна глубокая защита от браузеров от еще неизвестного XSS Уязвимости на вашем сайте, используйте строгий заголовок Content-Security-Policy. Это не открывает ваш сайт для известных уязвимостей.

В настоящее время эта функция включена по умолчанию в MSIE, Safari и Google Chrome. Раньше это было включено в Edge, но Microsoft уже удалила эту неправильную функцию из Edge. Mozilla Firefox никогда не реализовывал это.

Смотрите также:

https://homakov.blogspot.com/2013/02/hacking-facebook-with-oauth2-and-chrome.html https://blog.innerht.ml/the-misunderstood-x-xss-protection/ http://p42.us/ie8xss/Abusing_IE8s_XSS_Filters.pdf https://www.slideshare.net/masatokinugawa/xxn-en https://bugs.chromium.org/p/chromium/issues/detail?id=396544 https://bugs.chromium.org/p/chromium/issues/detail?id=498982