Проверка HTTPS и заголовков безопасности

Проверка HTTPS и заголовков безопасности: HTTP-адреса, смешанный контент, отсутствующий HSTS, небезопасные формы и подресурсы, а также оценка заголовков для одного URL.

Что делает

По каждому URL

security-check отправляет один обычный GET-запрос. Он читает заголовки ответа, флаги cookie и редирект с http на https. Шесть заголовков безопасности дают оценку от 0 до 100 и класс от A до F. Заголовки, которые раскрывают версию сервера, тоже отмечаются. headers-check показывает полный набор заголовков.

  • HSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy и Permissions-Policy
  • Флаги cookie: Secure и SameSite
  • Редиректит ли http на https
  • Проверка путей по запросу, по умолчанию выключена

По всему скану

В скане каждая страница проверяется на http-ресурсы на https-странице, формы, которые отправляются на http, http-ссылки и отсутствующие заголовки безопасности. Находки привязаны к странице и к URL, который их вызывает.

  • Смешанный контент и небезопасные подресурсы
  • Формы, которые отправляются на action с http://
  • Внутренние ссылки с http:// на https-страницах
  • Отсутствие HSTS, CSP, X-Content-Type-Options, X-Frame-Options и Referrer-Policy

Открытые пути

С флагом probe security-check также проверяет, отвечают ли служебные пути вроде .git или .env. Это отдельный дополнительный шаг, и он выключен по умолчанию: даже read-only запрос к чужому сайту должен быть осознанным выбором. Это не тест на проникновение.

  • Выключено по умолчанию
  • Запускается только с --probe-paths
  • Только для сайтов, которые вам разрешено тестировать

Три шага — один сохранённый скан

  1. Прочитайте ответ по одному URL

    security-check отправляет один GET-запрос и читает заголовки ответа, флаги cookie и редирект с http на https.

  2. Оцените шесть заголовков безопасности

    HSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy и Permissions-Policy дают оценку 0–100 и класс от A до F.

  3. Найдите смешанный контент по всему скану

    В скане каждая страница проверяется на http-ресурсы, небезопасные адреса форм и отсутствующие или повторяющиеся заголовки безопасности.

Проверки в этой возможности

ПроверкаЧто значитКритичностьДоказательство
FORM_URL_INSECUREФорма отправляется на action с http://, поэтому данные уходят без шифрованияCriticalURL action формы на странице
HTTP_URLURL открывается по http, а не по httpsImportantURL страницы
MIXED_CONTENThttps-страница загружает ресурс по httpImportantURL страницы и URL http-ресурса
INSECURE_SUBRESOURCEhttps-страница загружает изображение, скрипт или таблицу стилей по httpImportantURL ресурса и страница, которая на него ссылается
MISSING_HSTSСтраница не отправляет заголовок Strict-Transport-SecurityTipЗаголовки ответа страницы
MISSING_CSPHTML-страница не отправляет заголовок Content-Security-PolicyTipЗаголовки ответа страницы
MISSING_X_FRAME_OPTIONSНа странице нет ни X-Frame-Options, ни директивы frame-ancestors в CSPTipЗаголовки ответа страницы
DUPLICATE_SECURITY_HEADERЗаголовок безопасности отправлен больше одного раза в одном ответеTipИмя заголовка и ответ, в котором он повторяется
Ещё в реестре проверок
HTTP_LINK_ON_HTTPSMISSING_X_CONTENT_TYPE_OPTIONSMISSING_REFERRER_POLICY

Одна команда

bash
seohead security-check --url https://example.com/

Сначала установите: руководство по установке. Каждая команда работает и как MCP-инструмент для ИИ-агентов.

Что нужно

  • URL страницы для security-check
  • Скан для проверок на уровне страницы
  • Разрешение на тестирование сайта, если используете --probe-paths

Ограничения

  • Проверяется наличие заголовка, а не сила его значения
  • Один URL даёт один ответ: другие страницы могут отдавать другие заголовки
  • Это не тест на проникновение и не сканер уязвимостей
  • Permissions-Policy оценивает security-check, но в находках скана он не выводится

Вопросы

Что-то меняется на моём сайте?
Нет. security-check отправляет обычные GET-запросы и читает то, что сайт и так отдаёт. Проверка путей вроде .git или .env выключена по умолчанию и запускается только с --probe-paths.
Как считается оценка?
Каждый заголовок даёт баллы: HSTS — 20, CSP — 20, X-Content-Type-Options — 15, X-Frame-Options — 15, Referrer-Policy — 15, Permissions-Policy — 15. От 90 баллов — A, от 75 — B, от 60 — C, от 40 — D, от 20 — E, ниже — F. Директива frame-ancestors в CSP засчитывается вместо X-Frame-Options.
Проверяются ли значения заголовков?
Нет. Проверяется, что каждый заголовок есть. Слабый CSP, который присутствует, получает полные баллы.
Одна команда запускает все проверки из этого списка?
Нет. security-check работает с одним URL. Проверки на уровне страницы из этого списка берутся из скана и выводятся по страницам в результатах скана.
Можно посмотреть заголовки сохранённого скана?
Да. headers-analyze читает очищенные заголовки ответа, которые хранятся в сохранённом скане, не отправляет никаких запросов и выводит находки по заголовкам безопасности.

Проверьте на своём сайте