Web安全之防范点击劫持

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

攻击原理


攻击者实施攻击的一般步骤是:

  1. 黑客创建一个网页利用iframe包含目标网站;
  2. 隐藏目标网站,使用户无法察觉到目标网站存在;
  3. 构造网页,诱骗用户点击特定按钮 (图1中的PLAY!按钮);
  4. 用户在不知情的情况下点击按钮,触发执行恶意网页的命令。

防御方法

服务端防御

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:

posted @ 2019-03-06 15:42  universal  阅读(2821)  评论(1)    收藏  举报