Web安全之防范点击劫持
点击劫持(clickjacking)又称为界面伪装攻击 (UI redress attack)是一种在网页中将恶意代码等隐藏在看似无害的内容(如按钮)之下或者将透明的iframe覆盖在一个正常的网页上,并诱使用户点击的手段。也可以与 XSS 和 CSRF 攻击相结合,突破传统的防御措施,提升漏洞的危害程度。
攻击原理

攻击者实施攻击的一般步骤是:
- 黑客创建一个网页利用iframe包含目标网站;
- 隐藏目标网站,使用户无法察觉到目标网站存在;
- 构造网页,诱骗用户点击特定按钮 (图1中的PLAY!按钮);
- 用户在不知情的情况下点击按钮,触发执行恶意网页的命令。
防御方法
服务端防御
X-FRAME-OPTIONS 机制
X-FRAME-OPTIONS是微软提出的一个http头,专门用来防御利用iframe嵌套的点击劫持攻击。并且在IE8、Firefox3.6、Chrome4以上的版本均能很好的支持。这个头有三个值:
- DENY // 拒绝任何域加载
- SAMEORIGIN // 允许同源域下加载
- ALLOW-FROM // 可以定义允许frame加载的页面地址
如果浏览器使用了这个安全机制,在网站发现可疑行为时,会提示用户正在浏览 网页存在安全隐患,并建议用户在新窗口中打开。这样攻击者就无法通过 iframe 隐藏目标的网页。

例如github添加了这个头并且设置为deny,因此不能被嵌套到其他iframe中。

而百度没加,因此能被嵌套到其他iframe中。

stackoverflow加入了X-Frame-Options : SAMEORIGIN,以stackoverflow为例,在测试页面中用iframe嵌入stackoverflow:

浙公网安备 33010602011771号