# Нет заголовков безопасности: HSTS и запрета на показ во фрейме

Сайт работает, и посетитель ничего не замечает. Но браузер не получил от сайта двух указаний: открывать его только с шифрованием и не показывать внутри чужих страниц. Первое нужно, чтобы запрос не перехватили в чужой сети, второе — чтобы сайт не подложили под чужую кнопку.

Эта страница на сайте: https://neodog.ru/problems/security-headers-missing

## Так это выглядит в отчёте

Строка из отчёта о сайте-примере ваш-сайт.ru. В отчёте о вашем сайте в ней будут ваши адреса и даты.

**Стоит посмотреть. Настройки для браузеров: Сайт можно встроить в чужую страницу и открыть без шифрования**

Сайт не запрещает показывать себя внутри чужих страниц. Этим пользуются мошенники: кладут сайт невидимым слоем поверх своей страницы, и посетитель, сам того не зная, нажимает вашу кнопку — например, «Оплатить» или «Удалить». Сайт не сообщает браузерам, что открывать его нужно только по защищённому адресу. Когда человек набирает адрес без https:// или идёт по старой ссылке, первый запрос уходит без шифрования — в чужой сети, например в кафе или гостинице, на него могут ответить вместо вашего сайта. Сам сайт при этом работает как обычно.

Что делать: Попросите того, кто ведёт сайт, добавить в ответ сервера две строки из блока «Для специалиста»: на большинстве хостингов это делается в панели управления или в файле настроек сайта. Сначала убедитесь, что все страницы сайта открываются по защищённому адресу: после этого браузеры перестанут открывать их иначе. Если вы пользуетесь Вебвизором Яндекс Метрики или сами показываете сайт внутри других страниц, скажите об этом заранее: для них делают исключение.

Для специалиста: Нет заголовка Strict-Transport-Security; для начала: Strict-Transport-Security: max-age=31536000. Нет запрета на показ во фрейме: ни X-Frame-Options, ни frame-ancestors в Content-Security-Policy; например: Content-Security-Policy: frame-ancestors 'self' (Вебвизору Метрики нужны свои адреса в этом списке). Страница: https://ваш-сайт.ru

## Почему так бывает

- На большинстве хостингов эти указания по умолчанию выключены, а включить их никто не просил.
- Сайт перевели на защищённый адрес, а следующий шаг — сказать об этом браузерам — не сделали.
- Сайт перенесли на другой сервер, и настройки старого не переехали.
- Указания задавало дополнение или модуль сайта, и после обновления оно перестало это делать.

## Что делать

1. Убедитесь, что все страницы сайта открываются по адресу с https://, а адрес без него сам ведёт на защищённый: после включения HSTS браузеры перестанут открывать сайт иначе.
2. Включите HSTS: во многих панелях хостинга это переключатель в разделе «SSL». Если его нет, в настройки веб-сервера добавляют заголовок Strict-Transport-Security: max-age=31536000.
3. Запретите показывать сайт во фрейме: заголовок X-Frame-Options: SAMEORIGIN или Content-Security-Policy: frame-ancestors 'self'.
4. Если на сайте работает Вебвизор Яндекс Метрики, выберите второй вариант и добавьте в него адреса из справки Метрики: иначе записи посещений перестанут открываться.
5. Запустите проверку ещё раз: строка «Настройки для браузеров» в отчёте должна перейти в «В порядке».

## Починим за фиксированную цену

**Настройки для браузеров** — 1 500 ₽. Сайт открывается только с шифрованием, и его нельзя показать внутри чужой страницы.

Починку заказывают из отчёта: кнопка рядом с проблемой. Условия работ — в оферте: https://neodog.ru/offer

## Вопросы

### Что такое HSTS простыми словами?

Это указание сайта браузеру: запомни, что меня открывают только с шифрованием. Получив его однажды, браузер сам подставляет https:// и не делает ни одного открытого запроса, даже если человек набрал адрес без него.

### Чем опасен показ сайта во фрейме?

Мошенник открывает ваш сайт невидимым слоем поверх своей страницы с безобидной кнопкой. Человек думает, что нажимает её, а на деле нажимает кнопку вашего сайта, где он уже вошёл в кабинет: подтверждает оплату или меняет настройки. Такой приём называют кликджекингом.

### Не сломают ли эти заголовки сайт?

HSTS — только если часть страниц ещё работает без шифрования, поэтому начинают без режима для поддоменов (includeSubDomains). Запрет фрейма — если сайт показывают внутри других страниц: в Вебвизоре, в виджете партнёра. Для них в правило добавляют исключение.

### А остальные заголовки — CSP, nosniff, Referrer-Policy?

Проверка читает и их и показывает в блоке «Для специалиста». На оценку они не влияют: их нет у большинства сайтов, а политику содержимого настраивают под конкретный сайт, и поспешная настройка ломает страницы.

## Проверить свой сайт

Бесплатно и без регистрации: https://neodog.ru/check. Проверяем сайт целиком: если эта проблема у вас есть, она будет в отчёте среди остального.
