Заголовки безопасности
Оцените ваши HTTP-заголовки безопасности — CSP, HSTS, X-Frame-Options и другие.
О инструменте «Заголовки безопасности»
Оценивает HTTP security-заголовки сайта — Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy и другие — по текущим лучшим практикам и сообщает, что присутствует, отсутствует или неверно настроено. Отсутствующие security-заголовки — одна из самых частых и легко исправимых находок базового аудита безопасности. Оценка разбита по заголовкам, а не сведена в один непрозрачный балл, поскольку каждый заголовок решает свою задачу — HSTS предотвращает даунгрейд протокола, X-Frame-Options защищает от clickjacking, CSP ограничивает, что может загрузить страница.
Высокий балл здесь — это эшелонированная защита, а не замена исправлению самих уязвимостей, от которых эти заголовки защищают: CSP и X-Frame-Options снижают ущерб от XSS или clickjacking-уязвимости, но не устраняют саму уязвимость в коде приложения.
Похожие инструменты
Рекомендуемые значения
| Заголовок | Хорошее стартовое значение |
|---|---|
Strict-Transport-Security | max-age=31536000; includeSubDomains |
Content-Security-Policy | Зависит от сайта. Начните с генератора CSP. |
X-Content-Type-Options | nosniff |
X-Frame-Options | DENY или SAMEORIGIN (либо frame-ancestors в CSP) |
Referrer-Policy | strict-origin-when-cross-origin |
Permissions-Policy | camera=(), microphone=(), geolocation=() для функций, которыми сайт не пользуется |
Cross-Origin-Opener-Policy | same-origin; если ломаются всплывающие окна входа — same-origin-allow-popups |
Cross-Origin-Resource-Policy | same-site. Осторожно с ресурсами, которые должны встраивать другие сайты. |
Заголовки, от которых можно отказаться
X-XSS-Protection устарел: современные браузеры его игнорируют, и сейчас рекомендуют не отправлять его вовсе или ставить 0. Expect-CT больше не используется. Версии программ в Server и X-Powered-By помогают только атакующим.
Где их задавать
- nginx:
add_header X-Content-Type-Options "nosniff" always;Осторожно:add_headerвнутри блокаlocationзаменяет все заголовки из блокаserver, и на части путей заголовки незаметно пропадают. - Apache:
Header always set X-Content-Type-Options "nosniff" - За CDN заголовки можно добавлять и на его стороне — тогда они есть и в ответах из кэша.
Осторожно с HSTS
Увидев HSTS, браузер отказывается открывать домен по обычному HTTP, пока не истечёт max-age. Прежде чем добавлять includeSubDomains, убедитесь, что все поддомены работают по HTTPS. Если не уверены, начните с короткого max-age, например 300, а preload добавляйте, только когда полностью уверены: удаление из списка предзагрузки занимает месяцы.