Отправлен заголовок Strict-Transport-Security, но Chrome по-прежнему запрашивает через http

Я запускаю новый сайт в Google App Engine с собственным доменом и хочу, чтобы весь трафик проходил через https.

Я создал тестовый скрипт по адресу http://rublonde.com/tmp:

<?
header("Strict-Transport-Security: max-age=180; includeSubdomains");
print $_SERVER['HTTP_X_FORWARDED_PROTO'];

(Содержимое сайта на самом деле не соответствует имени домена, я просто временно использую этот домен в качестве личного домена, чтобы я мог заставить работать заголовок HTTPS.)

В Google App Engine HTTP_X_FORWARDED_PROTO будет либо http, либо https. Я предполагал, что при первой загрузке этой страницы она получит заголовок HSTS, а затем при последующих загрузках страницы Chrome должен автоматически запрашивать страницу через https.

Я неправильно понимаю, как работает HSTS? Я делаю что-то неправильно?


person Kenny Wyland    schedule 16.12.2018    source источник


Ответы (1)


Ах, я понял, что заголовки HSTS игнорируются при отправке через http-соединение (я думаю, потому что они должны быть связаны с действительным сертификатом, который поставляется с https-соединением).

https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security#HSTS_mechanism_overview

Сервер реализует политику HSTS, предоставляя заголовок через соединение HTTPS (заголовки HSTS через HTTP игнорируются).

person Kenny Wyland    schedule 17.12.2018
comment
Это не связано с сертификатом — это функция безопасности. HTTP-запросы могут быть изменены при передаче, и если вы можете добавить HSTS на сайт, который не поддерживает HTTPS, то вы можете сделать DoS на этом сайте в течение длительного времени для любых пользователей, чей трафик перехватывается. Использование его только тогда, когда оно было отправлено через действительное соединение HTTPS, предотвращает это. - person Barry Pollard; 18.12.2018