【问题标题】:What is the advantage of 2-redirect HSTS instead of 1-redirect HSTS2-redirect HSTS 而不是 1-redirect HSTS 的优势是什么
【发布时间】:2019-11-09 22:48:36
【问题描述】:

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

  1. http://yourdomain.comhttps://yourdomain.com

  2. https://yourdomain.comhttps://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/$1 [R=301,L]

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

在安全性和 SEO 方面使用单重定向和双重定向的优缺点是什么。

另外,我已经在 .htaccess 中添加了 HSTS 标头:

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

那么我是否需要提交到 HSTS 预加载列表才能实现 HSTS 或添加上述标头就足够了?

【问题讨论】:

    标签: .htaccess ssl seo hsts


    【解决方案1】:

    如果你直接一步:

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

    那么您将永远不会选择https://example.com 的 HSTS 策略,因为您从未通过 https 访问过该裸域。这是因为 example.com 很常见(默认为 http://),但 www 网站很少使用 https://example.com

    这有两个问题:

    1. 它的安全性较低,因为只有您的 www 域受到保护。例如,如果攻击者设法在 http://example.com 上进行 MITM 流量,那么他们可以覆盖 https://www.example.com 上的 cookie。
    2. 如果没有在裸域上广泛使用 HSTS 策略,则预加载域会更加危险,因为您可能认为一切正常,然后预加载,然后发现无法通过 HTTPS 运行的站点(例如 @987654325 @ 或http://intranet.example.com 甚至http://dev.example.com),并且很难(基本上不可能?)恢复预加载(这是我不喜欢并且不推荐它的主要原因,除了高知名度的网站)。李>

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

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

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

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

    说实话,就 SEO 和性能而言,它并不会真正产生太大影响。双重重定向会对性能产生轻微影响,并且可能会稀释一些“搜索引擎优化汁”,但我认为大多数人会将您链接为您的首选域 (https://www.example.com) 而不是裸域,并且重定向是标准的一部分互联网,并且处理速度相当快。

    另外我已经在 .htaccess 中添加了 HSTS 标头:

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

    那么我是否需要提交到 HSTS 预加载列表才能实现 HSTS 或添加上述标头就足够了?

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

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

    如果您在使用 HTTP 标头运行几周或几个月后没有发现任何问题(最好使用上面提到的像素技巧),那么您可能希望考虑预加载。但老实说,我认为这对大多数网站来说都是多余的。有关我有这种(有些争议)观点的一些原因的更多信息,请参阅我的帖子:https://www.tunetheweb.com/blog/

    【讨论】:

    • 与 2 个重定向相比,一个重定向对链接汁的稀释会更少吗?我的很多链接都指向 HTTP,因为绝大多数来自 HTTPS 迁移之前。
    • example.comexample.com。双重重定向仅影响后者,如果重定向到 www 变体。如果您一直使用 www 变体,并且大多数链接都指向 http 版本的 www 变体,那么仍然只会有一个重定向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 2017-04-23
    • 2011-05-12
    • 2018-05-16
    相关资源
    最近更新 更多