什么是 SSL 剥离?

SSL 剥离是中间人攻击的一种,攻击者把用户请求里的 HTTPS 链接替换成 HTTP,让用户与服务器之间的通信变成明文,从而窃听或篡改。用户在浏览器里看到的仍是正常网页,难以察觉。HSTS 是主要的防御手段。

第 29 期介绍过中间人攻击:攻击者插入通信双方之间,窃听或篡改数据。SSL 剥离(SSL stripping)是其中一种具体手法,针对的是 HTTPS 到 HTTP 的转换环节。

攻击过程是:用户最初通过 HTTP 访问网站,或点击了一个 HTTP 链接,攻击者截获请求后,把其中的 HTTPS 链接替换成 HTTP,再转发给用户。用户此后用 HTTP 与攻击者通信,内容以明文传输;攻击者则用 HTTPS 与真实服务器通信。于是服务器以为在和一个正常用户对话,用户也以为在正常访问网站,实际内容对攻击者全程可见。

SSL 剥离之所以能得手,是因为很多网站允许通过 HTTP 访问,并把用户从 HTTP 重定向到 HTTPS,而重定向这一步可以被攻击者拦截。对抗它的主要手段是 HSTS(HTTP Strict Transport Security,HTTP 严格传输安全):网站声明自己只接受 HTTPS,浏览器记住后,对同一网站的所有访问直接走 HTTPS,不再先访问 HTTP,从而绕开剥离环节。