Заголовки безопасности: что это такое и зачем они нужны
Пять служебных указаний, которые сервер передаёт браузеру вместе со страницей. Их не видно на экране, но от них зависит, можно ли подставить на ваш сайт чужой код.
Что это вообще такое
Когда браузер запрашивает страницу, сервер отдаёт не только её содержимое, но и служебные указания — заголовки ответа. Часть из них говорит браузеру, чего на этой странице делать нельзя: откуда можно брать скрипты, можно ли встраивать страницу в чужую, по какому протоколу открывать сайт в следующий раз.
Увидеть их на экране невозможно — они не часть страницы. Поэтому про них и забывают: сайт работает, выглядит прилично, а защиты нет.
Content-Security-Policy — самый важный
Он перечисляет, откуда странице разрешено загружать скрипты, стили и картинки. Всё, чего нет в списке, браузер не выполнит.
Зачем это нужно: если через дыру в движке или плагине на страницу попадёт чужой скрипт, без CSP он спокойно выполнится и сможет читать то, что человек вводит в форму. С CSP браузер его просто не запустит — потому что домен, с которого он грузится, в списке не значится.
HSTS — чтобы не было окна без защиты
Даже когда перенаправление с http на https настроено, первый запрос всё равно уходит по незащищённому соединению — и только потом браузер переходит на защищённое. В этот короткий миг соединение можно перехватить.
HSTS говорит браузеру: к этому сайту ходи только по https, всегда, даже если человек набрал адрес без него. После первого визита незащищённых запросов больше не будет.
X-Frame-Options — против подмены нажатий
Без него вашу страницу можно встроить в чужой сайт невидимым слоем. Человек думает, что нажимает кнопку на чужой странице, а нажимает на вашей — например, подтверждает действие в своём личном кабинете.
Приём старый и известный, а защита от него — одна строка в настройках сервера.
Остальные два
- X-Content-Type-Options запрещает браузеру угадывать тип файла. Без него загруженную картинку можно подсунуть так, что браузер примет её за исполняемый скрипт.
- Referrer-Policy ограничивает, что уходит на чужие сайты при переходе с вашего. Без него в адресе перехода может утечь страница, с которой человек ушёл, — иногда вместе с параметрами.
Как включить
Это настройка сервера, а не правка сайта. У большинства хостингов она делается в панели управления или в файле конфигурации, и занимает у разработчика около пятнадцати минут на все пять.
- Начните с проверкиПосмотрите, какие заголовки уже есть. Часто один-два стоят, а остальных нет.
- Добавьте простыеX-Content-Type-Options, X-Frame-Options и Referrer-Policy включаются одной строкой каждый и ничего не ломают.
- HSTS — осторожноВключайте, только когда https работает на всём сайте: браузер запомнит указание надолго, и откатиться быстро не получится.
- CSP — последнимСначала в режиме наблюдения, посмотрите, что он собирался заблокировать, и только потом включайте по-настоящему.
Частые вопросы
Заголовки безопасности влияют на позиции в поиске?
Напрямую — нет. Но работающий https, частью которого является HSTS, поисковики учитывают. А взломанный сайт из выдачи выпадает совсем, и тут защита влияет самым прямым образом.
Можно ли включить все пять сразу?
Четыре — да, они почти ничего не ломают. С CSP лучше не спешить: слишком строгая настройка отключит собственные счётчики и виджеты, и это заметят не сразу.
Это правка сайта или сервера?
Сервера. Код сайта менять не нужно — заголовки задаются в настройках веб-сервера или в панели хостинга.
Как проверить, какие заголовки стоят у меня?
Наша проверка безопасности показывает все пять и говорит по каждому, чем грозит его отсутствие. Отдельных инструментов для этого не нужно.
Проверьте свой сайт
Двадцать восемь проверок по 152-ФЗ, безопасности и техническому состоянию. Первая страница — бесплатно, без регистрации.