框架克星克星…需要克星码
假设您不希望其他网站将您的网站“框”为<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()
如果看到计数器增加,则将当前位置更改为攻击者控制的服务器 - 该服务器提供一个带有HTTP状态代码 的页面,该页面不会导致浏览器导航到任何地方
我的问题是-与实际 问题 相比,这更多的是JavaScript难题-如何克服破坏框架的破坏力?
我有一些想法,但在测试中没有任何效果:
- 尝试通过清除
onbeforeunload
事件onbeforeunload = null
无效 - 添加一个已
alert()
停止的过程,使用户知道它正在发生,但不以任何方式干扰代码;单击“确定”使清除操作照常进行 - 我想不出什么办法清除
setInterval()
计时器
我不是一个JavaScript程序员,所以这对您来说是我的挑战:
回答:
我不确定这是否可行-但是,如果您无法打破框架,为什么不显示警告。例如,如果您的页面不是“首页”,则创建一个setInterval方法来尝试破坏框架。如果经过3或4次尝试后,您的页面仍不是首页,请创建一个div元素,该元素会覆盖整个页面(模式框),并显示一条消息和一个链接,例如…
您正在未经授权的框架窗口中查看此页面-(等等)潜在的安全问题)
不是最好的,但是我看不出他们可以用哪种方式来摆脱困境。
以上是 框架克星克星…需要克星码 的全部内容, 来源链接: utcz.com/qa/403041.html