在想一个问题: HSTS 为什么有意义?

2017-01-26 10:04:39 +08:00
 lslqtz
不谈预置列表,就谈强制 HTTPS ,如果只是首页要强制 HTTPS ,那么 301 我记得是缓存 100 年的。
如果是第一次请求就被中间人的情况 HSTS 也没用啊...,而且HSTS开启子域名后有一些没配证书的就会挂掉。
而且HSTS这种做法还会有一些兼容性问题,似乎也只在HTTPS下访问才会生效。
7265 次点击
所在节点    SSL
52 条回复
lhbc
2017-01-26 10:19:49 +08:00
1. preload 有效防止中间人
2. includeSubDomains 可以传染到所有子域
3. 中间人如果使用了无效证书,浏览器会拒绝例外证书
4. 301 默认不会缓存很久,通过头部让浏览器缓存指定时间
lslqtz
2017-01-26 10:23:05 +08:00
@lhbc 不谈 preload (不谈预置列表)和子域(只是首页)了啊...
4 的话 301 网上看默认 100 年
3 是个好理由 发个感谢
kindjeff
2017-01-26 10:23:05 +08:00
所以需要预置列表
ryd994
2017-01-26 10:26:36 +08:00
hsts 的所谓兼容性问题,恰恰是普通 https 中常见的弱点。
比如混合内容,这就是错误的处理,没 hsts 的时候有人凑合用而已
hsts 是对 https 的常见实现错误的修正,毕竟事实证明 https 当初的很多设计在理论上是安全的,可实际上没能做到
davidyin
2017-01-26 10:28:26 +08:00
HSTS 的重要性就在于预置列表。
lhbc
2017-01-26 10:37:37 +08:00
@lslqtz 301 大多数浏览器在重启后没有缓存。可以用 Cache-Control 指定缓存时间
ZE3kr
2017-01-26 10:37:48 +08:00
L3 已经说了一些了。还有就是 301 ,他只能重定向一个页面,如果是一个域名下的所有页面( Path )呢?假如有人就是根据某一个域名钓鱼,它可以定义一个你之前绝对没访问过的 Path ,那假如开了 HSTS 并之前访问过,肯定好比 301 好。

事实情况是,首页 301 之后,浏览器不知道所有页面都是 301 ,所以有 HSTS
ZE3kr
2017-01-26 10:41:18 +08:00
HSTS 必须在 HTTPS 下才能生效啦,假如没 HTTPS 和 HTTPS 证书,也弄了 HSTS ,或者中间人加了这个 Header ,岂不是就再也无法忘问了?

还有不会有人会在实际部署时没配好证书就 includeSubDomains 的
VmuTargh
2017-01-26 11:19:17 +08:00
@lhbc 第三点不是 HPKP/DANE 的事情么(
kn007
2017-01-26 11:32:13 +08:00
最主要是 1L 说的中间人如果使用了无效证书,浏览器会拒绝例外证书。而不会询问你是否继续,既然不安全,为何继续。
kn007
2017-01-26 11:33:09 +08:00
补充:当然必须 preload
kn007
2017-01-26 11:33:41 +08:00
另外 301 可以被劫持,并不安全。
lslqtz
2017-01-26 11:35:44 +08:00
@kn007 在第一次建连时, HSTS 同样可以被劫持。
第二次建连时,两个都可以被缓存。
kn007
2017-01-26 11:36:51 +08:00
@lslqtz 所以我下面补充了, preload 是必须的。
kn007
2017-01-26 11:37:57 +08:00
@lslqtz 找了下,可以下屈哥写的文章。
https://imququ.com/post/sth-about-switch-to-https.html#toc-2

其中提到:
可以看到 HSTS 可以很好的解决 HTTPS 降级攻击,但是对于 HSTS 生效前的首次 HTTP 请求,依然无法避免被劫持。浏览器厂商们为了解决这个问题,提出了 HSTS Preload List 方案:内置一份可以定期更新的列表,对于列表中的域名,即使用户之前没有访问过,也会使用 HTTPS 协议。
lslqtz
2017-01-26 11:38:48 +08:00
@ryd994 HSTS 也是允许混合内容的吧...
如果不要子域名, 301 感觉重新在加一个 HSTS 没啥必要。
@lhbc 已发感谢。
@VmuTargh HPKP +1
@kn007 感觉 preload 不太灵活...301 可以灵活的设置过期时间,配合 HPKP 。
lslqtz
2017-01-26 11:39:41 +08:00
@kn007 哈哈,这篇文章我也看过。
经常逛屈屈的博客。
kn007
2017-01-26 11:42:47 +08:00
@lslqtz 嗯,我一开始也是你这种想法,但配合泛域名证书就无所谓灵活不灵活了。。。有了 http2 ,我想不出为什么要回到 http

前几天 V2 有位 BuySSL 的赞助了份泛域名。
lslqtz
2017-01-26 11:43:56 +08:00
@kn007 可我没有啊噗噗=A=
kn007
2017-01-26 11:45:55 +08:00
@lslqtz 哈哈哈哈。因为有了 preload 和 hsts ,我就没上 HPKP ,无所谓了。懒得维护。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/336979

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX