Про заголовки безопасности: что ставить и как проверить
Ребят, всем знакома ситуация, когда поставил пару security-заголовков на сайт и вроде бы защиты добавил, а толку никакого. Вот что реально стоит контролировать:
- Content-Security-Policy. Тут главное не переборщить со скриптами и не забывать про style-src, иначе XSS не остановишь.
- X-Frame-Options. Надо жестко — DENY или хотя бы SAMEORIGIN, чтобы не встраивали сайт в чужие фреймы и не делали кликиджекинг.
- Strict-Transport-Security. Ставьте обязательно, если с HTTPS — чтобы браузеры не падали на HTTP и не было MITM.
- X-Content-Type-Options с значением nosniff — помогает избежать неправильной интерпретации контента.
- Referrer-Policy — хорошо уменьшает слив адресов и лишних данных с переходов.
- Permissions-Policy (раньше Feature-Policy) — ограничивает доступ к разным API браузера, позволяет урезать поверхности атаки.
Проверять проще всего через браузер DevTools — вкладка Network, выбираем запрос к главной странице, смотрим ответ и есть ли эти заголовки. Если чего нет — сразу биг надо.
Кстати, если используете Nginx или Apache, добавьте заголовки через конфиги, это проще и стабильней, чем программными методами. И обязательно не забывайте тестить после обновлений движка или плагинов, там порой что-то сбивается.
У кого есть свои фишки по этому поводу — делитесь, интересно, что ещё реально помогает в боевом режиме без лишних заморочек.