Что такое «X-Content-Type-Options = nosniff»?

293

Я выполняю некоторые тесты проникновения на моем локальном хосте с OWASP ZAP, и он продолжает сообщать об этом сообщении:

Заголовок X-Content-Type-Options заголовка Anti-MIME-Sniffing не был установлен в «nosniff»

Эта проверка относится только к Internet Explorer 8 и Google Chrome. Убедитесь, что каждая страница устанавливает заголовок Content-Type и X-CONTENT-TYPE-OPTIONS, если заголовок Content-Type неизвестен

Я понятия не имею, что это значит, и я не смог ничего найти в Интернете. Я попытался добавить:

<meta content="text/html; charset=UTF-8; X-Content-Type-Options=nosniff" http-equiv="Content-Type" />

но я все еще получаю предупреждение.

Как правильно установить параметр?

Koffeehaus
источник

Ответы:

179

Это предотвращает браузер от прослушивания MIME-типа. Большинство браузеров теперь придерживаются этого заголовка, включая Chrome / Chromium, Edge, IE> = 8.0, Firefox> = 50 и Opera> = 13. См.

https://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx?Redirected=true

Отправка нового заголовка ответа X-Content-Type-Options со значением nosniff не позволит Internet Explorer MIME-анализировать ответ от объявленного типа содержимого.

РЕДАКТИРОВАТЬ:

Да, это заголовок HTTP, а не опция метатега HTML.

Смотрите также: http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx

Реми Гаконь
источник
22
Вы должны упомянуть, что это for servers hosting untrusted content. Для веб-сайтов, которые не отображают контент из пользовательских загрузок, вам не нужно устанавливать это.
Machineaddict
12
@machineaddict, неправильно . Обнюхивание будет происходить независимо от того, является ли контент доверенным или недоверенным. См. Security.stackexchange.com/a/11761/2379 . Это сломает ваш сайт тонкими способами. Всегда отключайте сниффинг, если вам не нравятся сюрпризы.
Pacerier
33
Я думаю, что вы пропустили часть "Что такое MIME-нюхание?"
VarunAgw
3
firefoxтеперь также поддерживает этот заголовок: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
VasiliNovikov,
«Принудительный» заголовок может быть неверно истолкован как «требующий», я изменил его на «уважающий».
Чарли,
136

Описание

Установка X-Content-Type-OptionsHTTP-заголовка ответа сервера для nosniffинструктирования браузеров отключить контент или анализ MIME, который используется для переопределения Content-Typeзаголовков ответов для угадывания и обработки данных с использованием неявного типа контента. Хотя это может быть удобно в некоторых сценариях, оно также может привести к некоторым атакам, перечисленным ниже. Конфигурирование вашего сервера для возврата установленного X-Content-Type-Optionsзаголовка ответа HTTP nosniffбудет указывать браузерам, которые поддерживают анализ MIME, использовать предоставленный сервером Content-Typeи не интерпретировать контент как другой тип контента.

Поддержка браузера

X-Content-Type-OptionsЗаголовок ответа HTTP поддерживается в Chrome, Firefox и Крае, а также других браузерах. Последняя поддержка браузеров доступна в таблице совместимости браузеров Mozilla Developer Network (MDN) для X-Content-Type-Options:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options

Атаки отражены

  1. MIME Confusion Attack позволяет проводить атаки через сайты с пользовательским содержимым, позволяя пользователям загружать вредоносный код, который затем выполняется браузерами, которые будут интерпретировать файлы с использованием альтернативных типов содержимого, например неявныхapplication/javascriptи явныхtext/plain. Это может привести к атаке «Drive-by-Download», которая является распространенным вектором атаки для фишинга. Сайты, на которых размещается пользовательский контент, должны использовать этот заголовок для защиты своих пользователей. Это упоминается VeraCode и OWASP, которые говорят следующее:

    Это уменьшает подверженность атакам при загрузке с диска и сайтам, обслуживающим загруженный пользователем контент, который благодаря умному присвоению имен может рассматриваться MSIE как исполняемые или динамические файлы HTML.

  2. Несанкционированная горячая ссылка также может быть включена путемContent-Typeсниффинга. Горячая ссылка на сайты с ресурсами для одной цели, например, для просмотра, приложения могут полагаться на анализ типа контента и генерировать большой трафик на сайтах для другой цели, когда это может противоречить их условиям обслуживания, например, GitHub отображает код JavaScript для просмотра, но не для исполнения:

    Некоторые надоедливые пользователи, не являющиеся людьми (а именно компьютеры), начали «горячую» ссылку на ресурсы с помощью функции необработанного представления - используя необработанный URL-адрес в srcкачестве тега a <script>или <img>. Проблема в том, что это не статические активы. Необработанное представление файла, как и любое другое представление в приложении Rails, должно быть отображено перед его возвращением пользователю. Это быстро приводит к значительному снижению производительности. В прошлом мы были вынуждены блокировать популярный контент, обслуживаемый таким образом, потому что это создавало чрезмерную нагрузку на наши серверы.

Grokify
источник
Кто думал, что решение игнорировать явный тип контента и использовать работу с догадками было бы хорошей идеей? о боже ...
Сэм Сирри
105
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

Этот заголовок предотвращает атаки на основе «пантомимы». Этот заголовок не позволяет Internet Explorer MIME-анализировать ответ от заявленного типа содержимого, так как заголовок указывает браузеру не переопределять тип содержимого ответа. С опцией nosniff, если сервер сообщает, что содержимое является text / html, браузер отобразит его как text / html.

http://stopmalvertising.com/security/securing-your-website-with-.htaccess/.htaccess-http-headers.html

Вон Джун Бэ
источник
1
Разве это не всегда так ?! Я нахожу странным, что браузер пытается действовать «умно» и игнорировать явный заголовок типа контента.
Сэм Сирри
26

Для серверов Microsoft IIS вы можете включить этот заголовок через ваш web.configфайл:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Content-Type-Options"/>
        <add name="X-Content-Type-Options" value="nosniff"/>
      </customHeaders>
    </httpProtocol>
</system.webServer>

И вы сделали.

Заходи
источник
3
Также можно установить пользовательские заголовки в IIS, но ваше решение лучше, поскольку оно может управляться исходным кодом, а не управляемой конфигурацией.
ajeh
9

HTTP-заголовок ответа X-Content-Type-Options представляет собой маркер, используемый сервером для указания того, что типы MIME, объявленные в заголовках Content-Type, не должны изменяться и должны соблюдаться. Это позволяет отказаться от прослушивания типа MIME, или, другими словами, это способ сказать, что веб-мастера знали, что они делают.

Синтаксис:

X-Content-Type-Options: nosniff

Директивы:

nosniff Блокирует запрос, если запрошенный тип равен 1. «style», а тип MIME не «text / css», или 2. «script», а тип MIME не является типом JavaScript MIME.

Примечание: nosniff применяется только к типам «script» и «style». Также применение nosniff к изображениям оказалось несовместимым с существующими веб-сайтами.

Технические характеристики :

https://fetch.spec.whatwg.org/#x-content-type-options-header

Сахил Аггарвал
источник