Що робить X-Content-Type-Options?

Заголовки безпеки — це підмножина заголовків відповіді HTTP, які можуть бути встановлені веб-сервером, кожен із яких застосовує контроль безпеки у браузерах. Заголовки HTTP – це форма метаданих, що надсилаються з веб-запитами та відповідями. Заголовок безпеки «X-Content-Type-Options» забороняє браузерам виконувати перевірку MIME.

Примітка: заголовки HTTP не є винятковими для HTTP і також використовуються в HTTPS.

Що таке MIME sniffing?

Коли будь-які дані надсилаються через Інтернет, одна з частин метаданих є типом MIME. Багатоцільові розширення Інтернет-пошти або типи MIME — це стандарт, який використовується для визначення типу даних, які містить файл, що вказує, як файл повинен оброблятися. Як правило, MIME-тип складається з типу і підтипу з необов'язковим параметром і значенням. Наприклад, текстовий файл UTF-8 матиме тип MIME «text/plain; charset=UTF-8”. У цьому прикладі тип — «текст», підтип — «звичайний», параметр — «набір символів», а значення — «UTF-8».

Щоб запобігти неправильному позначенню та обробці файлів, веб-сервери зазвичай виконують перевірку MIME. Це процес, коли явно зазначений MIME-тип ігнорується, а замість цього аналізується початок файлу. Більшість типів файлів містять послідовності заголовків, які вказують на тип файлу. У більшості випадків типи MIME є правильними, і нюхання файлу не має значення. Якщо є різниця, веб-сервери використовуватимуть тип файлу sniffed, щоб визначити, як обробляти файл, а не оголошений тип MIME.

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

Що робить X-Content-Type-Options?

Заголовок X-Content-Type-Options має лише одне можливе значення «X-Content-Type-Options: nosniff». Увімкнення його інформує браузер користувача, що він не повинен виконувати перевірку типу MIME і замість цього покладатися на явно оголошене значення. Без цього параметра, якщо шкідливий файл JavaScript був замаскований під зображення, наприклад PNG, файл JavaScript буде виконано. Якщо увімкнено опції X-Content-Type-Options, файл буде розглядатися як зображення, яке не завантажується, оскільки файл не є дійсним форматом зображення.

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