HTML-сторінкам в аудиті бракує nosniff

У звітіResponses without X-Content-Type-Options: nosniff

x_content_type_options_missing · Проблема

Коротка відповідь

Це з’являється, коли сторінка двічі поспіль відповіла без X-Content-Type-Options: nosniff. Заголовок каже браузерам довіряти оголошеному типу файлу, а не вгадувати його, що блокує атаки, коли завантажений користувачем файл виконується як скрипт. Надсилайте X-Content-Type-Options: nosniff у своїх відповідях.

Серйозність: Низька. Це виправляє один рядок заголовка, і найбільше воно важить там, де відвідувачі можуть завантажувати файли.

Чому це важливо

Довідник web.dev із заголовків безпеки пояснює, що без nosniff деякі браузери можуть сприйняти файл, як-от завантажене користувачем зображення, як активний документ і виконати його скрипти, і рекомендує цей заголовок для всіх ваших ресурсів.

Що зробити

  1. Перегляньте знахідку: у ній показано обидві відповіді, які ми прочитали, і значення X-Content-Type-Options у кожній або те, що його не було.
  2. Додайте X-Content-Type-Options: nosniff на своєму сервері чи в CDN для кожної відповіді, а не лише для сторінок.
  3. Переконайтеся, що nosniff — перше значення заголовка; перевірка читає перше.

Що ми читаємо

Ми читаємо кінцеву відповідь кожної просканованої сторінки з власним user agent. Коли перша відповідь — повна HTML-сторінка з кодом 200, ми одразу запитуємо ту саму адресу вдруге тим самим запитом і читаємо заголовки обох відповідей. Читається кожна така сторінка, зокрема сторінки з noindex.

Сторінка фіксується, коли в обох відповідях першого заголовка X-Content-Type-Options немає або його перше значення не є nosniff, у будь-якому регістрі літер. Якщо дві відповіді розходяться щодо результату nosniff або другий запит неможливо порівняти з першим, наприклад тому, що перша відповідь встановила cookie чи минуло понад 30 секунд, сторінка позначається як неперевірена.

Приклад і докази

Ілюстративний приклад — одну сторінку прочитано двічі, а не реальний аудит.

https://bakery.example/ відповіла на обидва запити так:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
X-Frame-Options: SAMEORIGIN

Жодна відповідь не має X-Content-Type-Options, тому сторінка фіксується з обома відповідями.

Можливе виправлення: додайте X-Content-Type-Options: nosniff до кожної відповіді.

Підтвердити й перевірити знову

Перевірте самі: відкрийте заголовки відповіді сторінки в інструментах розробника вашого браузера й пошукайте X-Content-Type-Options: nosniff.

Повторна перевірка: Повний аудит — запустіть новий аудит сайту. Знахідка закривається, коли сторінку знову проскановано, обидві відповіді повні й сходяться на тому, що містять nosniff. Якщо вони розходяться щодо nosniff, наприклад поки заголовок дійшов лише до частини ваших серверів, сторінка не перевіряється і знахідка залишається відкритою; сторінка, яку не проскановано знову або яка відповідає кодом 404, теж залишає її відкритою.

Обмеження та джерела

Перевірка читає лише відповіді HTML-сторінок, а не файлів, де вгадування важить найбільше, і лише перший заголовок та його перше значення. Вона не спостерігає, що робить браузер.

Упевненість: Висока, бо дві відповіді поспіль зчитуються безпосередньо й мають збігатися.

Джерела

  • web.dev, Короткий довідник із заголовків безпеки — пояснює, що без nosniff деякі браузери можуть сприйняти завантажений користувачем файл як активний документ і виконати його скрипти, і рекомендує цей заголовок для всіх ресурсів. Перевірено 28 вересня 2026.

Редакційна перевірка: 29 вересня 2026