风の愿 » HTTPS

HSTS

强制使用 HTTPS 一定能保障网站安全吗?并不是。虽然中间人在 HTTPS 协议下会被发现,然而中间人还可以阻止用户使用 HTTPS,强制使用不安全的 HTTP 从而截获和篡改流量,即使服务端只允许 HTTPS 也无法完全避免该攻击。

原理很简单,用户在浏览器中输入地址时,大多数时候是不包含 https: 的,也就是初始访问很可能是 http: 。中间人此时只需屏蔽服务端发送的 HTTPS 重定向 header (例如 location: https://example.com),并修改响应主体中的 HTTPS 地址到 HTTP,最后以 HTTP 方式继续和客户端交互数据就可以了。对于客户端来说,它以 HTTP 和中间人通信;对于中间人来说,它以 HTTPS 和服务端通信,因此服务端无法防御此类攻击。没有专业知识的客户端一般不会留意非 HTTP 通信,因此这种攻击往往很有效。

该攻击叫做 SSL stripping,具体可参见该演讲:https://www.youtube.com/watch?v=MFol6IMbZ7Y

HSTS 机制可以一定程度上降低该攻击风险,提高安全性。HSTS 是一个 header,告诉浏览器未来该域名(或该域名和子域名)的访问一律使用 HTTPS 协议。浏览器一旦收到 HSTS header,那么在有效时间内,域名下的后续请求都会强制使用 HTTPS,从而避免了后续访问中的 SSL stripping 攻击。

Read More »
Published @ 19th August, 2015
1