如何使客户端在没有HSTS预加载的情况下通过HTTPS请求?

如何使客户端在没有HSTS预加载的情况下通过HTTPS请求?,https,hsts,Https,Hsts,如果我使用HTTPhttp://example.com,响应被永久移动301,且位置标题设置为https://example.com-当然,由于MIM攻击,这是不安全的 有没有一种方法可以直接向浏览器发送“再次发出相同的请求,但这次是通过HTTPS”,而不是显式地告诉浏览器URL 我本想在Troy Hunt上找到这种解决方案,但唯一的建议是使用HSTS预加载(即向Google注册我们的网站),这是我们不想做的。HTTP严格传输安全(HSTS)允许您发送一个HTTP头来表示“下次使用此域时,请确保

如果我使用HTTP
http://example.com
,响应被永久移动
301
,且
位置
标题设置为
https://example.com
-当然,由于MIM攻击,这是不安全的

有没有一种方法可以直接向浏览器发送“再次发出相同的请求,但这次是通过HTTPS”,而不是显式地告诉浏览器URL


我本想在Troy Hunt上找到这种解决方案,但唯一的建议是使用HSTS预加载(即向Google注册我们的网站),这是我们不想做的。

HTTP严格传输安全(HSTS)允许您发送一个HTTP头来表示“下次使用此域时,请确保它通过HTTPS,即使用户键入http://或使用以http://开头的链接。”

在Apache中,它使用以下配置进行设置:

Header always set Strict-Transport-Security "max-age=60;"
这会发送一条消息,告诉浏览器记住此标题60秒。确认没有问题时,应增加此值。通常建议设置为63072000(2年)

因此,这比重定向更安全,因为它自动发生,而不需要发送不安全的HTTP请求,该请求可以在不安全的网络上被拦截、读取甚至更改

例如,假设您以前使用家庭WiFi登录到网上银行,浏览器记住了HSTS设置,然后您访问了当地的咖啡店。在这里,您尝试连接到免费WiFi,但实际上连接到黑客WiFi。如果您使用HTTP链接、书签或键入URL,然后HST将启动,您将立即通过HTTPS,黑客无法对您的流量进行解密(在合理范围内)

所以。一切都很好。您还可以添加
includeSubDomains
属性:

Header always set Strict-Transport-Security "max-age= 63072000; includeSubDomains"
这增加了额外的安全性

HSTS的一个缺陷是,它需要初始连接来加载此HTTP头并在将来保护您。它也会在
最长时间后超时。这就是预加载的原因。您可以将域提交给浏览器,浏览器会将此域的HSTS设置加载到浏览器代码中,并使其永久化第一个连接是安全的

然而,我只是发现它不在你的控制范围内是危险的。因此,如果你发现某个域没有使用HTTPS(例如,或)然后,一旦预加载生效-砰,你就强迫自己升级这些,而且升级速度很快,因为在那之前它们是不可访问的。从浏览器中恢复至少需要几个月的时间,很少有人能忍受这种停机。当然,你应该测试这一点,但这需要去(而不是)使用
includeSubDomains
完全复制预加载的功能,但不是每个人都这样做


您还必须询问您正在防范什么以及您将面临哪些风险?通过http://link,黑客拦截可以访问cookie(该站点可以通过使用cookie上的
secure
属性来防范)并可能通过让您保持在http://而不是升级到https://(这主要通过HST和WiFi缓解)。请记住,即使在攻击者的WiFi网络上,绿色挂锁也意味着连接是安全的(在合理的限制范围内)。因此,只要您注意这一点(你的用户也是这样,我承认这更难)风险相当小。这就是为什么到处使用HTTPS,然后默认使用HTTPS是如此重要的原因。因此,对于大多数网站,我认为没有预加载的HST就足够了,并将控制权留给网站所有者。

难道没有办法只向浏览器转发一些东西吗“再次发出相同的请求,但这次是通过HTTPS"与显式地告诉浏览器URL不同?
这不会使它更安全。与哪个解决方案相反,@tkausl?与显式地发送要重定向到的域相反。@tkausl请阅读链接的博客文章,看看重定向不是一个好的解决方案,很容易被劫持。但是发送
会再次发出相同的请求这一次,通过HTTPS进入浏览器的安全问题完全相同。我想你在回答前半部分提出的问题比我想的要好得多。
不过,老实说,我真的不喜欢预加载。我只是发现它超出了你的控制,这很危险。
-这基本上就是我想说的。
HSTS的一个缺陷是,它需要初始连接才能加载此HTTP头并在将来保护您。
-这就是我问这个问题的原因。预加载是绕过该缺陷的方法。如果有比预加载更好的方法,那么它就不必存在。不过,我认为预加载对于大多数站点和应用程序来说是过度的HSTS为重定向提供了良好的附加保护,风险很小。