Проверка заголовков безопасности
Заголовки безопасности — это инструкции, которые ваш сервер добавляет к каждому HTTP-ответу и которые велят браузеру включить защиты, не применяемые по умолчанию: блокировать внедрённые скрипты, принудительно использовать HTTPS, запрещать встраивание во фреймы, прекращать MIME-сниффинг. Введите URL, и этот инструмент получит финальный ответ, оценит шесть заголовков по 100-балльной шкале, покажет точное найденное значение каждого, объяснит риск одной строкой и выдаст конфигурацию Nginx или Apache для вставки, когда заголовок отсутствует или слаб. Если вам нужна только быстрая версия, проверка здоровья сайта уже включает подоценку заголовков безопасности в свой общий отчёт — эта страница — глубокий разбор: оценки и исправления по каждому заголовку, и ничего больше.
Последнее обновление:
Хотите следить за этим постоянно? Следите бесплатно с myeventwatch — оповещения об истечении срока и простоях, карта не нужна.
Глубокий разбор — рядом с быстрой оценкой проверки здоровья
Проверка здоровья сайта отвечает на широкий вопрос — здоров ли этот сайт в целом? — и сворачивает заголовки безопасности в этот ответ как одну подоценку среди многих. Это верная форма для рутинного осмотра, но она не может сказать, какой именно заголовок потерял баллы, какое значение ваш сервер действительно отправил и что вставить в конфигурацию, чтобы это исправить. Эта страница существует для последующей работы: один запрос, шесть оцениваемых заголовков, буквенный класс и — для каждого отсутствующего или слабого заголовка — точные строки Nginx и Apache, которые его добавляют или усиливают. Здесь нет чёрного ящика — полная таблица оценки опубликована в разделе фактов ниже, и это ровно та таблица, по которой оценивает проверяющий модуль.
Как работает проверка: модуль запрашивает введённый вами URL, следует за перенаправлениями и оценивает заголовки финального ответа — того ответа, из которого браузер на самом деле построил бы страницу. Это обычный HTTP-запрос, а не браузер: JavaScript не выполняется, подресурсы не загружаются, а заголовки, появляющиеся только на других путях или после входа, не видны. Оценка измеряет один конкретный слой — присутствуют ли и сильны ли эти шесть защит, обращённых к браузеру, — и ничего больше. Сайт может набрать 100 и всё равно иметь баг приложения; сайт может получить F и никогда не быть взломанным. Относитесь к классу как к чек-листу усиления с весами, а не как к приговору о безопасности всего сайта.
Исправлять — в порядке влияния
Большую часть оценки можно вернуть недорого. X-Content-Type-Options, защита от фреймов и Referrer-Policy — по одной строке каждый и ничего не ломают на обычном сайте. Strict-Transport-Security — тоже одна строка, но отправляйте его только тогда, когда каждая страница и поддомен действительно работают по HTTPS: max-age в один год — это обещание, которое браузеры заставят вас держать. Permissions-Policy требует десяти минут размышлений о том, какие функции браузера ваши страницы действительно используют. Content-Security-Policy несёт больше всего баллов и больше всего риска: разворачивайте её сначала как Content-Security-Policy-Report-Only, наблюдайте отчёты о нарушениях, чините то, что сломалось, и только потом применяйте принудительно. Сопутствующий гид, заголовки безопасности — объяснение, проходит по тому, что каждый заголовок на самом деле останавливает, и почему порядок исправлений именно таков.
Соседние проверки: безопасность транспорта — другая половина этой истории: оценщик SSL оценивает саму конфигурацию TLS, а эта страница оценивает то, что сервер говорит поверх этого соединения. Для широкого рутинного осмотра, включающего заголовки наряду с доступностью, DNS и сроком сертификатов, вернитесь к проверке здоровья сайта.
Замечание о методе: результаты — снимок одного запроса в один момент. CDN и конфигурации с несколькими серверами могут отвечать на разные запросы разными наборами заголовков, поэтому удивительный результат стоит перепроверить до изменения конфигурации — и ещё раз после изменения, потому что заголовок, добавленный на источнике, не всегда переживает стоящий перед ним прокси.
Опубликованная таблица оценки
| Content-Security-Policy — 35 баллов | Хорошо означает применяемую политику (Report-Only не засчитывается), которая держит скрипты подальше от 'unsafe-inline' и 'unsafe-eval' и ограничивает, откуда можно загружать ресурсы. Самый тяжёлый вес, потому что CSP — главная защита от внедрённых скриптов. |
| Strict-Transport-Security — 20 баллов | Хорошо означает max-age не менее одного года (31536000 секунд), отправленный по HTTPS; includeSubDomains усиливает его ещё больше. Короткие max-age получают частичные баллы. |
| Защита от фреймов — 15 баллов | Хорошо означает директиву CSP frame-ancestors или заголовок X-Frame-Options со значением DENY или SAMEORIGIN, чтобы другие сайты не могли встраивать ваши страницы во фрейм для кликджекинга. |
| X-Content-Type-Options — 10 баллов | Хорошо означает единственное значение nosniff, чтобы браузеры не могли через MIME-сниффинг превратить ответ в другой, исполняемый тип. |
| Referrer-Policy — 10 баллов | Хорошо означает политику, которая никогда не отправляет полный URL другим источникам, — strict-origin-when-cross-origin или строже (same-origin, no-referrer). |
| Permissions-Policy — 10 баллов | Хорошо означает, что заголовок присутствует и выключает мощные функции браузера, которые сайт не использует, например камеру, микрофон и геолокацию. |
| Cross-Origin-Opener-Policy — бонус | Сообщается рядом с оцениваемыми заголовками, но баллов не стоит: он изолирует ваши страницы от окон других источников и намеренно находится вне сотни, чтобы опубликованные веса оставались ровно шестью заголовками выше. |
| Классы | 95 и выше — A+, 90+ — A, 80+ — B, 65+ — C, 50+ — D, 35+ — E, а ниже 35 — F. Баллы начисляются по каждому заголовку в зависимости от силы найденного значения; отсутствующий заголовок получает ноль в своей строке. |
Часто задаваемые вопросы
Как рассчитывается оценка — это чёрный ящик?
Нет. Шесть заголовков имеют фиксированные опубликованные веса — CSP 35, HSTS 20, защита от фреймов 15, X-Content-Type-Options 10, Referrer-Policy 10, Permissions-Policy 10 — в сумме 100. Каждый заголовок получает полные, частичные или нулевые баллы в зависимости от силы значения, найденного проверяющим модулем, а буквенный класс следует диапазонам в таблице фактов выше. Cross-Origin-Opener-Policy сообщается как бонус и никогда не влияет на оценку.
Чем это отличается от проверки здоровья сайта?
Проверка здоровья сайта — это широкий осмотр: доступность, DNS, TLS, сроки и многое другое, — в котором заголовки безопасности появляются как одна быстрая подоценка. Эта страница оценивает только заголовки, но глубоко: точное найденное значение каждого, вердикт и баллы по каждому заголовку, риск простым языком и готовые к вставке исправления для Nginx и Apache. Используйте проверку здоровья, чтобы найти проблему, а эту страницу — чтобы её исправить.
Какой ответ оценивается — у моего есть перенаправления?
Оцениваются заголовки финального ответа после всех перенаправлений, потому что именно из этого ответа браузер строит страницу. Результат показывает финальные URL и статус, чтобы вы видели, где приземлилась цепочка. Одна оговорка: это статический запрос, а не браузер — JavaScript не выполняется, — поэтому заголовки, которые фреймворк добавляет только на клиенте или которые появляются только после входа или на других путях, не входят в класс.
Мой сайт получил F. Значит ли это, что его взломали?
Нет. F означает, что финальный ответ нёс мало или ни одного из шести оцениваемых заголовков — обычное состояние установки сервера или фреймворка по умолчанию. Это говорит, что браузеры ваших посетителей не получают защит, которые могли бы иметь; это ничего не говорит о том, был ли сам сайт скомпрометирован. Пройдите исправления в порядке влияния и проверьте снова: большинство сайтов за один день могут подняться на несколько классов.
Оценка 100 означает, что мой сайт безопасен?
Нет — это означает, что эти шесть заголовков присутствуют и сильны на проверенном URL. Заголовки — один слой усиления: они не чинят баги приложения, слабые пароли, устаревшее ПО или сломанную конфигурацию TLS. Сочетайте эту проверку с оценщиком SSL для транспорта и с проверкой здоровья сайта для общей картины.