В чем преимущество 2-перенаправления HSTS вместо 1-перенаправления HSTS - PullRequest
0 голосов
/ 28 июня 2019

https://hstspreload.org/ предполагает, что должно быть 2 перенаправления с:

  1. http://yourdomain.com до https://yourdomain.com

  2. https://yourdomain.com до https://www.yourdomain.com

Я реализовал решение 2 перенаправления, используя приведенный ниже код в файле .htaccess:

RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Но мне интересно потерять преимущество этогоединое правило перенаправления, которое я использовал ранее:

RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R=301,L]

Так что теперь я в замешательстве, должен ли я использовать реализацию 2 перенаправлений для принудительного использования https по одному решению перенаправления?

Каковы плюсыи минусы использования single vs double redirect для безопасности и SEO.

Также я уже добавил заголовок HSTS, используя это в .htaccess:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS

Так что мне нужно подать предварительную загрузку HSTSсписок для реализации HSTS или добавления вышеуказанных заголовков достаточно?

1 Ответ

1 голос
/ 28 июня 2019

Если вы выполните прямое действие за один шаг:

http://example.com => https://www.example.com

Тогда вы никогда не выберете политику HSTS для https://example.com, поскольку вы никогда не посещали этот голый домен через https.Это связано с тем, что example.com широко используется (и по умолчанию используется http://), но https://example.com редко используется на сайтах www.

Это имеет две проблемы:

  1. Это менее безопасно, так как защищен только ваш домен www. Если злоумышленнику удалось перевести трафик MITM на http://example.com, то он может перезаписать файлы cookie, например, на https://www.example.com.
  2. Предварительная загрузка домена более опасна, если политика HSTS не использовалась широко на пустом домене, поскольку вы можете подумать, что все работает, а затем предварительно загрузить и затем обнаружить сайт, который не работает по HTTPS (например, * 1021).* или http://intranet.example.com или даже http://dev.example.com) и очень сложно (в принципе невозможно?) отменить предварительную нагрузку (что является основной причиной, по которой я не люблю и не рекомендую ее, за исключением высокого профиля)сайты).

Поэтому рекомендуется сделать это двойное перенаправление, чтобы иметь больше шансов получить этот домен. Это особенно актуально для пользователей, которые используют ваш пустой домен, а не ваш pссылка www версия.

Альтернативой двойному перенаправлению будет загрузка ресурса из чистого домена на вашей домашней странице.Например:

<img src=“https://example.com/1pixel.png”>

Это обеспечит загрузку политики HSTS для пустого домена и фактически лучше, чем двойное перенаправление, так как она также подберет эту политику, если вы перейдете к http://www.example.com или https://www.example.com.

Что касается SEO и производительности, то, честно говоря, это не будет иметь большого значения.Двойное перенаправление незначительно скажется на производительности и, возможно, немного разбавит «SEO-сок», но я предполагаю, что большинство людей будут ссылаться на вас как на предпочитаемый вами домен (https://www.example.com), а не на пустой домен, и перенаправления являются стандартной частью).Интернета и довольно быстро обрабатываются.

Также я уже добавил заголовок HSTS, используя это в .htaccess:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS

Так что я долженнужно отправить в список предварительной загрузки HSTS, чтобы иметь реализацию HSTS или достаточно добавить вышеуказанные заголовки?

Я бы настоятельно рекомендовал НЕ отправлять в список предварительной загрузки, а также удалять атрибут preload из вашего заголовка.(поэтому никто не может представить ваш сайт за вас.) Как указано выше, предварительная загрузка в принципе необратима, поэтому вам нужно быть достаточно уверенным, что это то, что вы хотите.

Это правда, что Интернет переходит на HTTPS, поэтому он должен быть довольно безопасным.чтобы сделать это, предполагая, что вам нужен только доступ к вашему сайту и каждому сайту в этом домене через HTTPS, ноt вы удивитесь, сколько людей обнаружили, что на самом деле у них есть сайт (или сайты) в этом домене, которые все еще требуют HTTP.Если вы обнаружите их только после предварительной загрузки, вы можете выбрать, чтобы мы перенесли все эти HTTP-сайты на HTTPS, или они останутся недоступными для пользователей после того, как их браузер получит ваши инструкции по предварительной загрузке.

Если вы не видите проблем посленесколько недель или месяцев работы с заголовком HTTP (в идеале с трюком пикселей, упомянутым выше), тогда вы можете рассмотреть возможность предварительной загрузки.Но, честно говоря, я думаю, что это излишне для большинства сайтов.Смотрите мой пост здесь для получения дополнительной информации, как некоторые из рассуждений, почему у меня это (несколько спорное) мнение: https://www.tunetheweb.com/blog/

...