如何解决框架克星克星…需要克星码
我不确定这是否可行-但是,如果您无法打破框架,为什么不显示警告。例如,如果您的页面不是“首页”,则创建一个setInterval方法来尝试破坏框架。如果经过3或4次尝试后,您的页面仍不是首页,请创建一个div元素,该元素会覆盖整个页面(模式框),并显示一条消息和一个链接,例如…
您正在未经授权的框架窗口中查看此页面-(等等)潜在的安全问题)
不是最好的,但是我看不出他们可以用哪种方式来摆脱困境。
解决方法
假设您不希望其他网站将您的网站“框”为<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状态代码 204 的页面,该页面不会导致浏览器导航到任何地方
我的问题是-与实际 问题 相比,这更多的是JavaScript难题-如何克服破坏框架的破坏力?
我有一些想法,但在测试中没有任何效果:
- 尝试通过清除
onbeforeunload
事件onbeforeunload = null
无效 - 添加一个已
alert()
停止的过程,使用户知道它正在发生,但不以任何方式干扰代码;单击“确定”使清除操作照常进行 - 我想不出什么办法清除
setInterval()
计时器
我不是一个JavaScript程序员,所以这对您来说是我的挑战: 嘿,克星,您能破坏帧破坏器吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。