Делать было нечего и решил просканировать свой сайт на ошибки связанные с заголовками и протоколами SSL с помощью сервиса securityheaders.com и увидел множество ошибок связанных с HSTS.
Ошибки, связанные с HTTP Strict Transport Security (HSTS)
Missing HSTS Header
Этот заголовок указывает браузерам, что доступ к сайту возможен исключительно через защищённый протокол HTTPS, а не через небезопасный HTTP. Если ваш сайт сначала принимает соединения по HTTP, прежде чем происходит перенаправление на HTTPS, пользователи всё равно временно взаимодействуют с вашим ресурсом по небезопасному протоколу. Заголовок HSTS приказывает браузеру всегда использовать HTTPS вместо HTTP.
Для исправления этой ошибки необходимо добавить следующий заголовок в файл .htaccess:
Header always set Strict-Transport-Security: "max-age=63072000
" env=HTTPS
Missing Content-Security-Policy Header
Этот заголовок отвечает за контроль над тем, какие ресурсы могут загружаться на странице вашего сайта. Он помогает предотвратить атаки межсайтового скриптинга (XSS) путём ограничения доверия браузера к содержимому, которое поступает с сервера. Инструмент SEO Spider лишь сообщает о наличии заголовка, но не анализирует корректность настроек политики для конкретного сайта. Проверку правильности настройки нужно проводить вручную.
Для устранения данной ошибки установите строгую политику Content-Security-Policy для всего сайта, чтобы минимизировать риск XSS-атак и инъекций данных:
Header always set Content-Security-Policy "upgrade-insecure-requests"
Missing X-Content-Type-Options Header
При отсутствии заголовка X-Content-Type-Options, браузер пытается самостоятельно определять тип контента, основываясь на его содержимом. Это может привести к уязвимостям, поскольку злоумышленник может попытаться загрузить вредоносный код, маскируя его под безопасный ресурс, например, изображение.
Добавьте следующий заголовок в файл .htaccess, чтобы браузер использовал только указанный тип контента и игнорировал попытки «угадывания»:
Header always set X-Content-Type-Options "nosniff"
Missing X-Frame-Options Header
Отсутствие заголовка X-Frame-Options делает возможным отображение вашей страницы внутри фреймов, iframe или объектов на сторонних сайтах. Это открывает возможность для атак типа «clickjacking», когда злоумышленник использует ваше содержимое для обмана пользователей.
Для защиты от таких угроз добавьте в файл .htaccess следующий заголовок:
Header always set X-Frame-Options SAMEORIGIN
Если же вам требуется разрешить отображение вашего сайта в iframe на других ресурсах, то добавьте такую запись:
Header always set X-Frame-Options ALLOW-FROM https://site.com/
Замените https://site.com/ на URL разрешенного домена.
Если вдруг X-Frame-Options установлен на хостинге по умолчанию, а вы хотите чтобы ваш сайт отображался на других через iframe, установите эту опцию
Header always unset X-Frame-Options
Missing Secure Referrer-Policy Header
В некоторых URL-адресах отсутствует политика Referrer-Policy. Это может привести к тому, что URL-адрес вашего сайта будет передан через HTTP-запросы, даже если сам сайт работает по HTTPS. Это повышает риск атак типа «человек посередине», так как злоумышленники смогут перехватывать информацию о переходах пользователей между страницами.
Рекомендуется установить политику Referrer-Policy с параметром "no-referrer-when-downgrade" для сохранения конфиденциальности при переходе с HTTPS на HTTP:
Header always set Referrer-Policy: "no-referrer-when-downgrade"
Дополнительные меры безопасности
Upgrade-Insecure-Requests
Этот заголовок принуждает браузер выполнять все запросы к сайту через HTTPS, что особенно полезно при обновлении сайта с HTTP на HTTPS:
Header always set Content-Security-Policy "upgrade-insecure-requests"
X-Content-Type-Options
Данный заголовок защищает сайт от атак, связанных с подменой типов MIME. Он инструктирует браузер проверять соответствие содержания файлов их расширениям, предотвращая выполнение вредоносного кода, спрятанного под видом безопасного файла:
Header always set X-XSS-Protection "1; mode=block"
Expect-CT (Certificate Transparency)
Этот заголовок сообщает браузеру, что необходимо дополнительно проверять сертификаты сайта на подлинность, сверяя их с открытыми журналами прозрачности сертификатов:
Header always set Expect-CT "max-age=7776000, enforce"
Установка заголовков безопасности в файл .htaccess
Header always set Strict-Transport-Security: "max-age=63072000
" env=HTTPS
Header always set Content-Security-Policy "upgrade-insecure-requests"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set Expect-CT "max-age=7776000, enforce"
Header always set Referrer-Policy: "no-referrer-when-downgrade"
Header always set X-Frame-Options SAMEORIGIN
Проведите повторное сканирование сайта с помощью сервиса: securityheaders.com дабы убедиться что мы установили все заголовки правильно.