Strict-Transport-Security HTTP 头造成的重定向

Strict-Transport-Security(HSTS) HTTP 头可以告诉浏览器使用强制的更高安全控制,比如当访问到的 SSL/TLS 证书异常时,浏览器会拒绝让用户添加例外(如下图,没有 HSTS 头的时候,Firefox 会有个让用户添加例外的选项,用户可以忽略这个证书异常,继续访问网站。如果是下图的情况,用户登录了这个伪装为 onedrive 的网站,恐怕后果就很严重了),或者是让浏览器以后都默认使用 TLS 协议访问这个网站,而不用再通过 80 端口去重定向(这个时候也是很容易被攻击的)。

但有时候 HSTS 头的不当使用也会造成问题,比如一些站点的莫名无法访问——明明在地址栏输入的是 http:// 但是却老是会自动跳转到 https://,这个时候我们往往会以为在服务器端有什么重定向,但是经过检查却没有!
经过检查,Chrome 或者 Firefox 都有此问题,但是 IE 却没有,所以可以怀疑是浏览器这头做的跳转。
其实就是 HSTS 的 includeSubDomains 这段区域造成的,这段参数使得浏览器在访问每个子站点都会走 TLS 协议

解决办法:服务器上面去掉这个参数,并且在浏览器中也需要清除这个记录,Chrome 可以访问 chrome://net-internal/#hsts 这个地址,查看和删除已经存在的站点,Firefox 则只能选择忘记整个站点的记录来清除。IE 目前还不支持 HSTS(Windows 10 会支持,但还在开发当中),所以没有此问题。

不负责任的豆瓣安全提醒

因为最近的 heartbleed 漏洞,邮箱里面收到了不少网站发过来的提示修改密码的邮件。而如以往,国内网站很少发。但是今天豆瓣网发了一封提示邮件

但是这个邮件未免发得太不负责。第一,OpenSSL 本身不是网络安全标准协议;第二,“你在其他时间的登录行为不会受到影响”,真的吗?豆瓣你真的这么确定?如果有人很久以前就已经发现和利用 heartbleed 漏洞,你也敢打包票漏洞在大规模曝光之前的登录是完全不受影响,未免也太轻浮。安全问题这东西,还是宁可信其有吧