Karl's blog!

EQ比IQ更重要

HTTP Strict Transport Security

它的作用是,对某些站点,当用户在浏览器输入不带协议的网址的时候,自动识别协议为https,而不是http。

例如用户输入paypal.com,浏览器会自动访问https://paypal.com,而不是http://paypal.com。当然,即使你的浏览器不支持HSTS,paypal也会自动跳转到https。

那么如何让自己的站点支持HSTS呢?只要在自己的站点的HTTPS响应的HTTP头里,加上下面这行即可

Strict-Transport-Security: max-age=16070400; includeSubDomains

当浏览器看到这个HTTP头,则会把当前站点加入HSTS列表。max-age和includeSubDomains的作用你们懂的。

根据Chrome的说明,当前支持HSTS的有Chrome和Firefox(版本>=4),我并没有去测试。

另外,Chrome自带一个默认的HSTS列表,paypal.com、lastpass.com、market.android.com等网站都列在里面。当前(Chrome16)这个列表是硬编码在Chrome的源代码(http://src.chromium.org/viewvc/chrome/trunk/src/net/base/transport_security_state.cc?view=log)里的。将来可能会把这个列表类似safe-browsing那样让不同的浏览器共享。

如果你想把自己的站点添加进Chrome的这个列表里,可以电邮

其实,大部分对安全有要求的站点,都会在服务器端自动识别协议,强制跳转到https。对这些站点来说,HSTS的作用只是让你少了一次HTTP请求而已。而在某些情况下,由于Set-Cookie、浏览器版本以及安全设置的因素,导致这个HTTP会发送HTTPS下所设置的cookie,存在安全隐患。除此之外,HSTS似乎没什么作用了。

另外我看了一下,alipay是没有发送Strict-Transport-Security头的。而paypal和lastpass都发送了这个头。

阅读更多
个人分类: IT技术
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭