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 деякі браузери можуть сприйняти файл, як-от завантажене користувачем зображення, як активний документ і виконати його скрипти, і рекомендує цей заголовок для всіх ваших ресурсів.
Що зробити
- Перегляньте знахідку: у ній показано обидві відповіді, які ми прочитали, і значення
X-Content-Type-Optionsу кожній або те, що його не було. - Додайте
X-Content-Type-Options: nosniffна своєму сервері чи в CDN для кожної відповіді, а не лише для сторінок. - Переконайтеся, що
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