阅读:2257回复:0
Clickjacking简单介绍
◆0 相关背景介绍
Clickjacking(点击劫持)是由互联网安全专家罗伯特·汉森和耶利米·格劳斯曼在2008年首创的。 是一种视觉欺骗手段,在web端就是iframe嵌套一个透明不可见的页面,让用户在不知情的情况下,点击攻击者想要欺骗用户点击的位置。 由于点击劫持的出现,便出现了反frame嵌套的方式,因为点击劫持需要iframe嵌套页面来攻击。 下面代码是最常见的防止frame嵌套的例子: if(top.location!=location) top.location=self.location;事实上,这种代码很容易被绕过,在后文中讨论。 ◆1 防御的几种方式 防止frame嵌套的js使用代码由高到低比例: if (top != self)if (top.location != self.location)if (top.location != location)if (parent.frames.length > 0)if (window != top)if (window.top !== window.self)if (window.self != window.top)if (parent && parent != window)if (parent && parent.frames && parent.frames.length>0)if((self.parent&&!(self.parent===self))&&(self.parent.frames.length!=0))检测到后的处理方案: top.location = self.locationtop.location.href = document.location.hreftop.location.href = self.location.hreftop.location.replace(self.location)top.location.href = window.location.hreftop.location.replace(document.location)top.location.href = window.location.hreftop.location.href = "URL"document.write('')top.location = locationtop.location.replace(document.location)top.location.replace('URL')top.location.href = document.locationtop.location.replace(window.location.href)top.location.href = location.hrefself.parent.location = document.locationparent.location.href = self.document.locationtop.location.href = self.locationtop.location = window.locationtop.location.replace(window.location.pathname)window.top.location = window.self.locationsetTimeout(function(){document.body.innerHTML='';},1);window.self.onload = function(evt){document.body.innerHTML='';}var url = window.location.href; top.location.replace(url)◆2 绕过的几种方式 对于使用parent.location来防御的可以使用多层嵌套的方式绕过。 一、例如防御代码为: if(top.location!=self.location){ parent.location = self.location;}建立两个页面: 1.html代码为: 2.html代码为: 访问1.html之后可以看到页面并无跳转等动作。 图片:2014091811440968989.png 二、onBeforeUnload函数的利用: onBeforeUnload的介绍以及各种浏览器的支持情况请见: http://w3help.org/zh-cn/causes/BX2047 如下的防御代码: if(top != self) top.location.replace(location);新建立页面,代码如下: 打开页面显示如下: 图片:2014091811440968989.png 欺骗用户点击留在此页后显示: 图片:2014091811440968989.png 三、XSS filter的利用 IE8以上以及Chrome浏览器都有XSS筛选器,这些可以用来对付防御frame嵌套的代码。 防御代码如下: if(top!=self){ top.location=self.location;}新建立页面,代码如下: |
|