HTTP Strict Transport Security

В теме перехода на https есть такой аспект, как HTTP Strict Transport Security (HSTS) — форсирование защищенного соединения. Это http-заголовок Strict-Transport-Security, указывающий броузеру установить защищенное соединение, даже если переход был по ссылке с указанием протокола http://. Предусмотрен стандартом RFC 6797.

HTTP Strict Transport Security

HSTS повышает защищенность сайта, в частности от атак с понижением степени защиты. Разумеется, сайт должен поддерживать защищенное соединение и переадресацию с http на https, желательно с кодом 301 (permanent redirect).

Добавить HSTS-заголовок можно разными способами.

Того, кто правит nginx.conf, учить не надо.

Для сервера Apache можно в файле .htaccess:

<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000"
</IfModule>

Значение max-age=31536000 устанавливает срок хранения флага броузером примерно в один год.

Можно установить заголовок и средствами вордпресса, в файле functions.php активной темы:

add_action( 'send_headers', 'hsts' );

function hsts() {
header( 'Strict-Transport-Security: max-age=31536000' );
}

Кроме max-age может быть установлено значение includeSubDomains, но в этом случае сертификат должен поддерживать все поддомены.

Некоторая уязвимость может быть связана с тем, что первое соединение возможно по протоколу http, которое может быть перехвачено. Чтобы это предотвратить, есть дополнительное значение того же заголовка preload, с которым броузер может предварительно проверить защищенность домена в специальном списке (HSTS preload list).

То есть, полный вариант такой:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Дополнение

Недавнее (опубликовано 17 марта 2016) исследование компании Netcraft показало, что 95% всех https серверов в мире (включая сайты банков и платежных систем) либо вообще не используют HTTP Strict Transport Security, либо используют неправильно. В результате их защищенность значительно понижена.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *