2重定向HSTS代替1重定向HSTS有什么优势

时间:2019-06-27 22:23:01

标签: .htaccess ssl seo hsts

https://hstspreload.org/建议使用以下两个重定向:

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

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

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

shrink=True

但是我想知道我以前使用的单一重定向规则的优势:

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

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

使用单重定向和双重定向实现安全性和SEO的优缺点。

我也已经在.htaccess中使用它添加了HSTS标头:

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

所以我应该提交到HSTS预加载列表以实施HSTS还是添加上述标头就足够了?

1 个答案:

答案 0 :(得分:1)

如果您直接走一步:

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

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

这有两个问题:

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

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

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

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

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

就SEO和性能而言,说实话,这并没有多大差异。双重重定向会对性能产生轻微影响,并可能会稀释一些“ 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.example.com