Що таке "Параметри X-Content-Type = nosniff"?


291

Я роблю тест на проникнення на мій локальний хост за допомогою OWASP ZAP, і він постійно повідомляє про це повідомлення:

Параметр X-Content-Type-Options для заголовка Anti-MIME-Sniffing не встановлено як "nosniff"

Ця перевірка стосується Internet Explorer 8 та Google Chrome. Переконайтеся, що на кожній сторінці встановлюється заголовок типу вмісту та опції X-CONTENT-TYPE-OPTIONS, якщо заголовок типу Content-Type невідомий

Я поняття не маю, що це означає, і я нічого не зміг знайти в Інтернеті. Я спробував додати:

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

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

Який правильний спосіб встановлення параметра?

Відповіді:


178

Це не дозволяє браузеру робити нюхання типу 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. Для веб-сайтів, які не відображають вміст із завантажених користувачами, це не потрібно встановлювати.
машинобудівний вирок

12
@machineaddict, неправильно . Снюхання буде відбуватися незалежно від того, чи вміст є довірчим чи ненадійним. Див. Security.stackexchange.com/a/11761/2379 . Це порушить ваш сайт тонко. Завжди відключайте нюхання, якщо вам не подобаються сюрпризи.
Пейс’єр

33
Я думаю, ви пропустили частину "Що таке нюхання типу MIME?"
VarunAgw

3
firefoxпідтримує цей заголовок і зараз: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
VasiliNovikov

"Застосування" заголовка може бути неправильно пояснено як "вимагає", я змінив його на "поважаючи".
Чарлі

136

Опис

Встановлення X-Content-Type-Optionsзаголовка відповіді HTTP сервера, щоб nosniffвказувати веб-переглядачам відключити вміст або MIME нюхати, що використовується для переопрацювання Content-Typeзаголовків відповідей для відгадування та обробки даних за допомогою неявного типу вмісту. Хоча це може бути зручно в деяких сценаріях, це також може призвести до деяких атак, перелічених нижче. Налаштування вашого сервера для повернення X-Content-Type-Optionsзаголовка відповіді HTTP nosniffбуде вказувати браузерам, які підтримують MIME нюхати, використовувати наданий сервер, Content-Typeа не інтерпретувати вміст як інший тип контенту.

Підтримка браузера

X-Content-Type-OptionsТема відповіді HTTP підтримується в Chrome, Firefox і краї, а також інших браузерах. Найновіша підтримка браузера доступна в Таблиці сумісності веб-переглядачів Mozilla (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. Це може призвести до атаки "завантаження з завантаження", яка є загальним вектором атаки для фішингу. Сайти, на яких розміщено вміст, створений користувачем, повинні використовувати це заголовок для захисту своїх користувачів. Це згадується Veracode і OWASP , який говорить наступне:

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

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

    Деякі прикрі нелюдські користувачі (а саме комп'ютери) прийняли до «хотлінкінгу» активам з допомогою необробленої функції перегляду - з використанням необробленого URL в якості srcдля <script>або <img>тега. Проблема в тому, що це не статичні активи. Перегляд необробленого файлу, як і будь-який інший вигляд у програмі Rails, повинен бути рендерований перед поверненням користувачеві. Це швидко збільшує ефективність роботи. У минулому ми змушені були блокувати популярний контент, що подається таким чином, оскільки він надмірно напружує наші сервери.


Хто думав, що рішення про ігнорування чіткого типу вмісту та використання здогадок робота буде гарною ідеєю? omg ...
Сем Сірі

105
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

Цей заголовок запобігає атакам на основі "mime". Цей заголовок забороняє Internet Explorer від нюхати відповідь MIME від заявленого типу вмісту, оскільки заголовок вказує браузеру не змінювати тип вмісту відповіді. За допомогою параметра nosniff, якщо сервер каже, що вміст є текстом / html, браузер відобразить його як text / html.

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


1
Чи не завжди це має бути так ?! Мені дивно, що браузер намагатиметься діяти «розумно» та ігнорувати явний заголовок типу вмісту.
Сем Сірі

25

Для серверів 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, що рекламуються у заголовках типу вмісту, не слід змінювати та дотримуватися. Це дозволяє відмовитися від нюху типу MIME, або, іншими словами, це спосіб сказати, що веб-майстри знали, що вони роблять.

Синтаксис:

Параметри типу X-Content-Type: nosniff

Директиви:

nosniff Блокує запит, якщо запитуваний тип є 1. "стиль", а тип MIME не є "text / css", або 2. "script", а тип MIME - це не тип MIME JavaScript.

Примітка: nosniff стосується лише типів "скрипт" та "стиль". Також застосування носників до зображень виявилося несумісним із існуючими веб-сайтами.

Специфікація:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.