Заголовки безопасности
Заголовки безопасности говорят браузеру посетителя, как обращаться с сайтом: можно ли другим сайтам показывать его во фрейме, какую часть адреса передавать, когда посетитель переходит по ссылке, требовать ли HTTPS и какие скрипты и функции браузера может использовать страница. WardPane добавляет их в каждый ответ сайта, и менять ради них приложение или .htaccess не нужно.
Они находятся в настройках сайта, на вкладке Дополнительно в разделе Заголовки безопасности.
Настройки
| Заголовок | По умолчанию | Варианты |
|---|---|---|
X-Frame-Options |
SAMEORIGIN |
SAMEORIGIN, DENY или выкл. |
Referrer-Policy |
strict-origin-when-cross-origin |
no-referrer, same-origin, strict-origin, strict-origin-when-cross-origin, no-referrer-when-downgrade или выкл. |
HSTS (Strict-Transport-Security) |
выкл. | max-age, includeSubDomains, preload |
Content-Security-Policy |
пусто | любая политика, например default-src 'self' |
Permissions-Policy |
пусто | любая политика, например geolocation=(), camera=() |
X-Content-Type-Options: nosniff добавляется в каждый ответ при любых настройках.
X-Frame-Options
Заголовок защищает от кликджекинга: другой сайт показывает ваш в невидимом фрейме и обманом заставляет посетителей по нему кликать. SAMEORIGIN (по умолчанию) разрешает фреймы только на вашем же сайте, DENY запрещает их совсем. Выключайте его, только если другим сайтам нужно встраивать ваши страницы.
Referrer-Policy
Этот заголовок задаёт, что браузер передаст в Referer, когда посетитель уходит с сайта по ссылке. При значении по умолчанию, strict-origin-when-cross-origin, внутри сайта передаётся полный адрес, другим сайтам только домен, а при переходе с HTTPS на HTTP ничего. Современные браузеры по умолчанию ведут себя так же.
HSTS
HSTS велит браузерам использовать для вашего домена только HTTPS в течение следующих max-age секунд, даже если кто-то наберёт http://. Включайте его, только когда сертификат уже работает: браузер, увидевший этот заголовок, отказывается открывать домен по обычному HTTP, пока срок не истечёт.
max-age: по умолчанию 15 552 000 секунд (180 дней), максимум 63 072 000 (два года).includeSubDomains: правило распространяется и на все поддомены, так что сначала проверьте, что HTTPS есть на каждом.preload: помечает домен как готовый для списка HSTS, встроенного в браузеры. Список preload требует включённого HSTS, max-age не меньше 31 536 000 (один год) и includeSubDomains, поэтому без всех трёх условий панель не даст отметить пункт. Исключение домена из списка preload занимает месяцы.
Заголовок отправляется только при HTTPS-соединениях, как того требует стандарт.
Content-Security-Policy и Permissions-Policy
Оба поля свободного ввода рассчитаны на опытных пользователей. Content-Security-Policy ограничивает, откуда страница может загружать скрипты, стили, картинки и фреймы. Она сильно затрудняет межсайтовый скриптинг (XSS), а слишком строгая политика ломает сайт, поэтому проверьте её на страницах всех типов, прежде чем на неё полагаться. Permissions-Policy отключает функции браузера, которые сайт не использует, например камеру, микрофон или геолокацию.
Значение может быть длиной до 1000 символов и без переносов строк.
Когда отправляются заголовки
Заголовки добавляются сразу после чёрного списка, лимита запросов, Bot Fight Mode, гео-блокировки и фильтра устройств. Если запрос отклонила одна из этих проверок, ответ уходит без них, а всё, что идёт дальше, их получает: файлы, ответы PHP и Node.js, страницы ошибок, а также ответы защиты от хотлинка, обязательных параметров ссылки и запроса пароля.
Если ваш PHP-скрипт или приложение Node.js само отправляет один из этих заголовков, его значение заменяет значение панели для этого ответа. Заголовки из правил .htaccess тоже применяются поверх (см. .htaccess).
За Cloudflare в режиме «Flexible» Cloudflare подключается к серверу по обычному HTTP, и заголовок HSTS не отправляется. В этом случае задайте HSTS в самом Cloudflare или переключитесь на «Full (strict)».