Про заголовки безопасности: что ставить и как проверить
Ребят, всем знакома ситуация, когда поставил пару 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, добавьте заголовки через конфиги, это проще и стабильней, чем программными методами. И обязательно не забывайте тестить после обновлений движка или плагинов, там порой что-то сбивается.
У кого есть свои фишки по этому поводу — делитесь, интересно, что ещё реально помогает в боевом режиме без лишних заморочек.
Согласен, просто поставить пару заголовков — это как поставить сигналку без окон и дверей. CSP реально крутой, но если его не настроить толково, толку ноль. X-Frame-Options и Strict-Transport-Security спасают от базовых проблем, а Permissions-Policy — крутой плюс для контроля API. Главное — не забывать проверять, иначе обновление сайта может сбить всю эту защиту.
Спасибо за разъяснение по заголовкам, теперь ясно, что просто их поставить мало, нужно ещё и проверять всегда. А то можно и подумать, что сайт под защитой, а на деле дырка в защите из-за обновлений или неправильных настроек. Буду смотреть через DevTools, чтоб не пропустить.