2-redirect HSTS 而不是 1-redirect HSTS 的优势是什么

What is the advantage of 2-redirect HSTS instead of 1-redirect HSTS

https://hstspreload.org/ 建议应该有 2 个重定向:

  1. http://yourdomain.com to https://yourdomain.com

  2. https://yourdomain.com to https://www.yourdomain.com

我在 .htaccess 文件中使用以下代码实现了 2 重定向解决方案:

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/ [R=301,L]

所以现在我很困惑,我应该使用 2 重定向实现来强制 https 超过单一重定向解决方案吗?

为了安全和 SEO 使用单重定向和双重定向的优缺点是什么。

此外,我已经在 .htaccess 中使用它添加了 HSTS header:

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

所以我需要提交 HSTS 预加载列表来实现 HSTS 还是添加上面的 headers 就足够了?

如果直接一步到位:

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

那么您将永远不会选择 HSTS 政策,因为 https://example.com as you never visited that bare domain over https. This is because example.com is common to use (and which would default to http://) but https://example.com 很少用于 www 网站。

这有两个问题:

  1. 它的安全性较低,因为只有您的 www 域受到保护。例如,如果攻击者设法在 http://example.com then they could overwrite cookies on https://www.example.com 上进行 MITM 流量。
  2. 如果 HSTS 策略尚未在裸域上广泛使用,则预加载域会更加危险,因为您可能认为一切正常,然后进行预加载,然后发现无法通过 HTTPS 工作的站点(例如http://blog.example.com or http://intranet.example.com or even http://dev.example.com) 并且恢复预加载非常困难(基本上不可能?)(这是我不喜欢也不推荐它的主要原因,除了高知名度的网站)。

因此建议执行此双重重定向,以便有更好的机会选择此域。对于使用您的裸域而不是您首选的 www 版本的用户来说尤其如此。

双重重定向的替代方法是从主页中的裸域加载资源。例如:

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

这将确保加载裸域的 HSTS 策略,实际上比双重重定向更好,因为如果您直接转到 http://www.example.com or https://www.example.com,它也会选择此策略。

就 SEO 和性能而言,老实说,这并没有太大的不同。双重重定向和可能稀释的“SEO 果汁”会对性能产生轻微影响,但我认为大多数人会将您链接为您的首选域 (https://www.example.com) 而不是裸域,重定向是标准部分互联网并且处理起来相当快。

Also I have already added HSTS header using this in .htaccess:

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

So should I need to submit to HSTS preload list to have HSTS implementation or adding the above headers is enough?

我强烈建议不要提交到预加载列表并从您的 header 中删除 preload 属性(这样就没有人可以为您提交您的网站)。如上所述,预加载基本上是不可逆的,所以你需要非常自信这就是你想要的。

互联网确实正在转向 HTTPS,因此假设您只需要通过 HTTPS 访问您的网站和该域下的每个网站,这样做应该是相当安全的,但您会惊讶于有多少人拥有发现实际上他们在该域下有一个站点(或多个站点)仍然需要 HTTP。如果您仅在预加载后发现这些,那么您只能选择我们将所有这些 HTTP 站点迁移到 HTTPS,否则在用户的浏览器获得您的预加载说明后,它们将仍然不可用。

如果您在 运行 HTTP Header 几周或几个月后没有发现任何问题(最好使用上述像素技巧),那么您不妨考虑预加载。但老实说,我认为这对大多数网站来说都太过分了。请参阅我的 post 此处了解更多信息,了解为什么我有这个(有点争议)意见的一些原因:https://www.tunetheweb.com/blog/