点击劫持

什么是点击劫持

点击劫持是一种视觉上的欺骗手段,攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面,通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。

FLASH点击劫持

在flash的点击游戏上面隐藏了一个看不见的iframe,从而诱导用户鼠标点击的位置能够完成一系列较为复杂的流程

图片覆盖攻击(XSIO)

通过调整图片的style使得图片能够覆盖在他所指定的任意位置,从而改变页面内容欺骗用户,或者诱使用户点击后链接到其他网站

防御XSIO时要检查<img>标签的style属性是否可能导致浮出

拖拽劫持与数据窃取

浏览器中的拖拽对象可以是一个链接,也可以是一段文字,还可以从一个窗口拖拽到另一个窗口,因此拖拽是不受同源策略限制的

ClickJacking 3.0: 触屏劫持

一次触屏操作,可能会对应以下几个事件:

  • touchstart,手指触摸屏幕时发生
  • touchend,手指离开屏幕时发生
  • touchmove,手指滑动时发生
  • touchcancel,系统可取消touch事件

通过将一个不可见的iframe覆盖到当前的网页上,可以劫持用户的触屏操作

防御点击劫持

frame busting

https://zhuanlan.zhihu.com/p/27310909

通过JS代码来禁止iframe嵌套,比如

if (top.location != location){
  top.location = self.location
}

但是,由于它是由JS写的,控制能力不是特别强,可以绕过。

比如上面的方法可以用两层iframe来绕过

X-Frame-Options

通过HTTP头来限制Iframe

当值为DENY时,浏览器会拒绝加载任何frame值;

若值为SAMEORIGIN,则frame页面的网址只能为同源域名下的页面;

若值为ALLOW-FROM,则可以允许frame加载的页面地址