Перейти к содержимому
Aback Tools Logo

Проверка Content-Type и сниффинга

Введите любое значение HTTP-заголовка Content-Type, чтобы проверить его уязвимость для атак MIME-сниффинга. При желании укажите значение заголовка X-Content-Type-Options, чтобы проверить, правильно ли настроен nosniff. Наш инструмент анализирует более 20 распространённых MIME-типов с подробной оценкой риска — вся обработка выполняется локально в вашем браузере, регистрация не требуется.

Content-Type Sniffer Checker

Enter a Content-Type header value to check if it is vulnerable to MIME-type sniffing attacks. Optionally provide the X-Content-Type-Options header value to validate whether nosniff is properly configured.

Paste the full Content-Type header value, including any parameters like charset or boundary

Optional. Enter the X-Content-Type-Options header value if your response includes it

Quick test:

Enter a Content-Type header

Check if your Content-Type is vulnerable to MIME sniffing

All analysis is performed locally in your browser. No data is sent to any server.

Почему стоит использовать нашу проверку Content-Type и сниффинга?

  • Мгновенный анализ MIME-типа: вставьте любое значение заголовка Content-Type и сразу определите MIME-тип, его категорию (HTML, изображение, скрипт и т. д.), параметры вроде charset и boundary и входит ли он в число более 20 распространённых типов контента в интернете.
  • Проверка X-Content-Type-Options: при желании укажите значение заголовка X-Content-Type-Options, чтобы проверить, правильно ли настроен nosniff. Инструмент мгновенно определяет, присутствует ли директива nosniff и правильно ли она оформлена для предотвращения MIME-сниффинга.
  • Оценка риска сниффинга: получите понятную оценку риска — защищено, низкий, средний или высокий — на основе вашей конфигурации Content-Type и X-Content-Type-Options. Точно поймите, насколько ваш контент уязвим для атак MIME-сниффинга.
  • Практические рекомендации по безопасности: получите пошаговые рекомендации, адаптированные к вашему Content-Type и настройке заголовков. Узнайте точно, что нужно изменить, чтобы защитить пользователей от уязвимостей сниффинга типа контента и XSS-атак.

Типичные сценарии использования проверки Content-Type и сниффинга

  • Аудит и укрепление веб-безопасности: во время аудитов безопасности проверяйте каждый заголовок Content-Type в ответах вашего веб-приложения. Убедитесь, что X-Content-Type-Options: nosniff задан глобально и что ни один эндпоинт не уязвим к атакам MIME-сниффинга, которые могут привести к XSS.
  • Тестирование на проникновение и оценка уязвимостей: выявляйте уязвимости MIME-сниффинга при тестировании на проникновение. Проверяйте, не отсутствует ли заголовок nosniff в эндпоинтах загрузки файлов, источниках CDN или ответах API, что позволило бы злоумышленникам маскировать вредоносный контент под безопасные типы файлов.
  • Настройка CDN и обратного прокси: проверьте, что ваш CDN, балансировщик нагрузки или обратный прокси корректно передаёт или добавляет заголовок X-Content-Type-Options. Неправильно настроенные прокси могут удалять заголовки безопасности, оставляя ответы вашего источника уязвимыми для сниффинга.
  • Соответствие требованиям и нормам: соблюдайте стандарты безопасности (PCI DSS, OWASP Top 10, ISO 27001, HITRUST), требующие правильных заголовков безопасности. Заголовок X-Content-Type-Options — критически важный механизм предотвращения утечки информации и защиты контента.
  • Проверка безопасности загрузки файлов: когда пользователи загружают файлы в ваше приложение, убедитесь, что загруженный контент отдаётся с правильными заголовками Content-Type и директивой nosniff. Не позволяйте злоумышленникам загружать замаскированные файлы HTML/JavaScript, которые могут выполниться в браузерах других пользователей.
  • Проверка заголовков ответов API: убедитесь, что ответы вашего REST API, эндпоинта GraphQL или вебхуков содержат корректные заголовки Content-Type и X-Content-Type-Options. Потребители API могут быть уязвимы к сниффингу, если ответы используют универсальные типы контента без защиты.

Что такое MIME-сниффинг?

MIME-сниффинг (также называемый сниффингом контента) — это поведение браузера, при котором он игнорирует объявленный сервером заголовок Content-Type и вместо этого исследует сам контент, чтобы угадать тип данных. Изначально это было сделано для обратной совместимости с неправильно настроенными серверами, но создаёт уязвимость: злоумышленник может загрузить файл, который заявлен как изображение (Content-Type: image/png), но содержит HTML с JavaScript. Без X-Content-Type-Options: nosniff браузер может выполнить содержимое как HTML, что открывает путь к межсайтовому скриптингу (XSS).

Как работает наша проверка Content-Type и сниффинга

  1. Введите Content-Type: вставьте значение заголовка Content-Type из вашего HTTP-ответа. Укажите параметры вроде charset и boundary, если они есть. Инструмент разбирает основной MIME-тип и все параметры.
  2. При необходимости добавьте X-Content-Type-Options: введите значение заголовка X-Content-Type-Options, если он есть в вашем ответе. Инструмент проверяет, установлен ли он в «nosniff» (единственное допустимое значение, обеспечивающее защиту).
  3. Оценка риска: инструмент анализирует MIME-тип по базе известных типов, их уровням риска сниффинга и наличию директивы nosniff. Он формирует уровень риска (защищено, низкий, средний, высокий) с конкретными практическими рекомендациями по улучшению безопасности.

Понимание параметров Content-Type

  • Charset: задаёт кодировку символов контента (например, charset=utf-8). Он сообщает браузеру, как декодировать байты в символы. Неверное указание charset может привести к атакам на основе кодировки.
  • Boundary: используется в составных Content-Type (multipart/form-data) для разделения частей сообщения. Параметр boundary — это уникальная строка, которая появляется между каждой частью составного контента.
  • Структура медиатипа: Content-Type имеет формат тип/подтип; параметр=значение. Тип — это категория верхнего уровня (text, image, audio, video, application, multipart, message), а подтип — конкретный формат (html, png, json и т. д.).
  • Проверка синтаксиса: инструмент разбирает заголовок Content-Type, чтобы извлечь и показать каждый параметр. Базовая проверка синтаксиса выполняется, однако полная валидация по RFC 7231 требует контроля правильного заключения значений параметров в кавычки и корректного использования точки с запятой как разделителя.

Конфиденциальность, безопасность и доступность

Наша проверка Content-Type и сниффинга обрабатывает всё локально в вашем браузере. Введённые значения заголовков никогда не отправляются на наши серверы — весь разбор, анализ и формирование рекомендаций выполняются на стороне клиента на чистом JavaScript. Инструмент полностью бесплатен, без регистрации, без аккаунта и без ограничений использования. Мы поддерживаем обширную базу из более чем 20 распространённых MIME-типов с их характеристиками риска сниффинга, и инструмент может анализировать любое значение Content-Type, включая пользовательские и вендорские типы.

Часто задаваемые вопросы

MIME-сниффинг — это поведение браузера, при котором он игнорирует объявленный заголовок Content-Type и исследует сам контент, чтобы определить его тип. Это позволяет злоумышленникам выдавать вредоносный контент (например, HTML с JavaScript) с безобидным заголовком Content-Type, и браузер может выполнить его как HTML, что ведёт к XSS-атакам.

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

Введите значение заголовка Content-Type и, при необходимости, значение заголовка X-Content-Type-Options. Инструмент разбирает Content-Type, определяет категорию MIME-типа, проверяет параметры вроде charset и boundary и оценивает уязвимость к сниффингу по уровню риска MIME-типа и наличию директивы nosniff — всё обрабатывается локально в вашем браузере.

Наиболее уязвимы text/html, text/javascript, application/octet-stream, image/svg+xml и text/xml. HTML-контент может выполняться как веб-страница, JavaScript может работать в контексте браузера, файлы SVG могут содержать встроенные скрипты, а универсальный бинарный тип (octet-stream) заставляет браузеры угадывать тип по байтам содержимого.

В Nginx: `add_header X-Content-Type-Options "nosniff" always;`. В Apache: `Header always set X-Content-Type-Options "nosniff"`. Большинство фреймворков, например Express с Helmet, Django и Rails, включают его по умолчанию.

Без заголовка браузеры решают, выполнять ли сниффинг, на основе собственных эвристик. Со значением «nosniff» браузерам явно указывается доверять заголовку Content-Type, что устраняет неоднозначность и обеспечивает предсказуемое, безопасное поведение.

Без этого заголовка, если злоумышленник загрузит файл с именем «image.png», содержащий HTML с JavaScript, и ваш сервер отдаст его с Content-Type: image/png, браузер может отобразить его как HTML и выполнить скрипт, что приведёт к уязвимости XSS.

Да! 100% бесплатно, без регистрации, без аккаунта и без ограничений использования. Весь анализ выполняется локально в вашем браузере — значения заголовков никогда не отправляются на сервер.