HSTS — заголовки безопасности (security headers)

HSTS SEO
Описание заголовков безопасности (security headers) для сайта и их установка при помощи файла .htaccess.

Не так давно обновил Screamingfrog SEO Spider и решил просканировать им свой блог на ошибки и увидел кучу ошибок связанных с HSTS.

ошибки связанные с HTTP Strict Transport Security

Давайте разберемся, что это за ошибки и как их исправить.

Security: Missing HSTS Header

URL-адреса, в которых отсутствует заголовок ответа HSTS. Заголовок ответа HTTP Strict-Transport-Security (HSTS) указывает браузерам, что к нему следует обращаться только с использованием HTTPS, а не по HTTP. Если веб-сайт принимает соединение по протоколу HTTP, до того, как он будет перенаправлен на HTTPS, посетители первоначально будут по-прежнему общаться по протоколу HTTP. Заголовок HSTS предписывает браузеру никогда не загружаться через HTTP и автоматически преобразовывать все запросы в HTTPS.

Как исправить

Заголовок HSTS следует использовать на всех страницах, чтобы указать браузеру, что он всегда должен запрашивать страницы через HTTPS, а не через HTTP. Для этого можно в файл .htaccess внести следующую строку заголовка HTTP Strict Transport Security:

Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS

Security: Missing Content-Security-Policy Header

URL-адреса, в которых отсутствует заголовок ответа Content-Security-Policy. Этот заголовок позволяет веб-сайту контролировать, какие ресурсы загружаются для страницы. Эта политика может помочь защититься от атак межсайтового скриптинга (XSS), использующих доверие браузера к содержимому, полученному с сервера. SEO Spider проверяет только наличие заголовка и не опрашивает политики, найденные в заголовке, чтобы определить, правильно ли они настроены для веб-сайта. Это следует выполнять вручную.

Как исправить

Установите строгий заголовок ответа Content-Security-Policy для всей страницы, чтобы смягчить межсайтовые сценарии (XSS) и атаки с внедрением данных.

Header always set Content-Security-Policy "upgrade-insecure-requests"

Security: Missing X-Content-Type-Оptions Header

URL-адреса, в которых отсутствует заголовок ответа «X-Content-Type-Options» со значением «nosniff». При отсутствии типа MIME браузеры могут «обнюхивать», чтобы угадать тип контента, чтобы правильно интерпретировать его для пользователей. Однако этим могут воспользоваться злоумышленники, которые попытаются загрузить вредоносный код, например JavaScript, через скомпрометированное изображение.

Как исправить

Чтобы свести к минимуму проблемы с безопасностью, заголовок ответа X-Content-Type-Options должен быть предоставлен и установлен на «nosniff». Это указывает браузерам полагаться только на заголовок Content-Type и блокировать все, что не совпадает точно. Это также означает, что набор типов контента должен быть точным.

Header always set X-Content-Type-Options "nosniff"

Security: Missing Х-Frame-Оptions Header

URL-адреса, в которых отсутствует заголовок ответа X-Frame-Options со значением «DENY» или «SAMEORIGIN». Это указывает браузеру не отображать страницу во фрейме, iframe, встраивании или объекте. Это помогает избежать атак типа «кликджекинг», когда ваш контент отображается на другой веб-странице, контролируемой злоумышленником.

Как исправить

Чтобы свести к минимуму проблемы безопасности, заголовок ответа X-Frame-Options должен быть снабжен значением «DENY» или «SAMEORIGIN».

Header always set X-Frame-Options SAMEORIGIN

А если на вашем хостинге установлен X-Frame-Options по умолчанию, но вы хотите чтобы ваш сайт отображался в iframe на других сайтах, добавьте в список заголовков безопасности следующую строку:

Header always unset X-Frame-Options

Security: Missing Secure Referrer-Policy Header

В URL-адресах отсутствуют политики «без реферера при переходе на более раннюю версию», «строгое происхождение при переходе на другое происхождение», «без реферера» или «строгое происхождение» в заголовке Referrer-Policy. При использовании HTTPS важно, чтобы URL-адреса не просачивались в запросы, отличные от HTTPS. Это может подвергнуть пользователей атакам типа «человек посередине», поскольку их может просматривать любой пользователь сети.

Как исправить

Рассмотрите возможность установки политики реферера строгого происхождения при перекрестном происхождении. Он сохраняет большую часть полезности реферера, снижая при этом риск утечки данных из разных источников.

Header always set Referrer-Policy: "no-referrer-when-downgrade"

Дополнительно

Upgrade-Insecure-Requests

Заголовок безопасности Upgrade-Insecure-Requests является дополнительным методом принудительного выполнения запросов к сайту через HTTPS при обновлении.

Header always set Content-Security-Policy "upgrade-insecure-requests"

X-Content-Type-Options

Заголовок безопасности X-Content-Type-Options позволяет защитить сайт от атак с подменой типов MIME. Он указывает браузеру фильтровать передаваемые данные и передавать только те, которые по содержанию соответствуют расширению. Например, если расширение файла «.docx», браузер должен получить файл Word, а не какой-нибудь исполняемый файл, у которого расширение «.exe», «.bat» заменено на «.docx».

Header always set X-XSS-Protection "1; mode=block"

Expect-CT (Certificate Transparency)

Заголовок безопасности Expect-CT (Certificate Transparency) сообщает браузеру, что он должен выполнить дополнительные проверки сертификата на подлинность по открытым журналам прозрачности сертификатов.

Header always set Expect-CT "max-age=7776000, enforce"

Добавление заголовков безопасности

Алгоритм добавления заголовков безопасности в файл .htaccess:

  1. Подключитесь по FTP/SMTP к сайту или через файловый менеджер хостинга.
  2. В корне сайта, находим файл .htaccess и делаем его резервную копию  (скопируйте на ПК или сделайте его копию с именем ht.access) на случай, вдруг что-то пойдет не так.
  3. Откройте файл .htaccess и добавьте в его конце блок заголовков безопасности:
    # Заголовки безопасности
    Header always set Strict-Transport-Security: "max-age=31536000" 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
    # Конец заголовков безопасности

    и сохраняем его.

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

Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( 1 оценка, среднее 5 из 5 )
Web-Revenue.ru
Добавить комментарий