框架巴斯特巴斯特...需要巴斯特代码
假设您不希望其他网站在<iframe>
“框架”您的网站:
<iframe src="http://example.org"></iframe>
因此,您在所有页面中插入反框架,破坏JavaScript的框架:
/* break us out of any containing iframes */
if (top != self) { top.location.replace(self.location.href); }
优秀! 现在你可以自动“破解”或者分解任何包含iframe的内容。 除了一个小问题。
事实证明, 你的框架破解代码可能被破坏 ,如下所示:
<script type="text/javascript">
var prevent_bust = 0
window.onbeforeunload = function() { prevent_bust++ }
setInterval(function() {
if (prevent_bust > 0) {
prevent_bust -= 2
window.top.location = 'http://example.org/page-which-responds-with-204'
}
}, 1)
</script>
此代码执行以下操作:
window.onbeforeunload
事件处理程序从当前页面导航离开时递增计数器 setInterval()
每隔一毫秒触发一次,如果计数器增加,则将当前位置更改为攻击者控制的服务器 我的问题是 - 这更像是一个JavaScript谜题而不是实际问题 - 你怎么能击败这个架构破坏者?
我有几个想法,但没有在我的测试工作:
onbeforeunload = null
清除onbeforeunload
事件没有效果 alert()
阻止该进程让用户知道它正在发生,但不会以任何方式干扰代码; 点击确定让平铺继续正常 setInterval()
计时器 我不是一个JavaScript程序员,所以这是我的挑战: 嘿,克星,你可以打破框架破坏者吗?
我不确定这是否可行 - 但如果你不能打破框架,为什么不显示警告。 例如,如果您的页面不是“首页”,请创建一个试图打破框架的setInterval方法。 如果在3或4次尝试后,你的页面仍然不是首页 - 创建一个div元素,覆盖整个页面(模态框),并带有一条消息和一个链接,如...
您正在未经授权的框架窗口中查看此页面 - (Blah blah ...潜在的安全问题)
点击这个链接来解决这个问题
不是最好的,但我不认为他们可以通过任何方式制定出他们的出路。
FWIW,大多数当前的浏览器都支持X-Frame-Options:deny指令,即使在脚本被禁用时也是如此。
IE8:
http://blogs.msdn.com/ie/archive/2009/01/27/ie8-security-part-vii-clickjacking-defenses.aspx
Firefox(3.6.9)
https://bugzilla.mozilla.org/show_bug.cgi?id=475530
https://developer.mozilla.org/en/The_X-FRAME-OPTIONS_response_header
镀铬/ Webkit的
http://blog.chromium.org/2010/01/security-in-depth-new-security-features.html
http://trac.webkit.org/changeset/42333
我们在http://seclab.stanford.edu/websec/framebusting/framebust.pdf的一个网站中使用了以下方法
<style>
body {
display : none
}
</style>
<script>
if(self == top) {
document.getElementsByTagName("body")[0].style.display = 'block';
}
else{
top.location = self.location;
}
</script>
链接地址: http://www.djcxy.com/p/10125.html