预防clickjacking的一个小技巧
WHATWG的HTML5文档开发者版本中举例提到了预防clickjacking的一个小技巧,即通过判断点击的页面是属于主窗口还是iframe框架中的子窗口,达到防止攻击者给用户呈现一个虚假的主窗口来引诱用户点击从而进一步获取信息。
以jsfiddle.net为例,我们挑选供javascript输入的iframe框与主窗口之间进行对比:
首先,在iframe中输入
console.log(top);
console.log(self);
console.log(top==self);
运行后结果是
Window jsfiddle.net
Window /_display/
false
而将同样的代码输入到主窗口下的firebug,运行结果为
Window jsfiddle.net
Window jsfiddle.net
true
由上面两个相反的结果,我们可以很容易利用javascript代码在点击事件触发之后,先确认点击是否发生在主窗口中,然后再进行后续操作。