而不是问如何杀死框架。我想知道什么技术可以用来防止页面内的iframe被“框架杀手”杀死

最佳答案

不幸的是,由于它们的工作方式,总是有一种方法来获得圆形框架杀手。 (但是,被框住的站点通常可以显示警告)。

参见Jeff Atwood的“ disturbing revelation”。

一些选择摘录:


  如果邪恶的网站决定要去
  构筑您的网站,您将
  陷害。期。破坏帧为
  无非是一种误解
  安全;它不起作用。


框架清除代码(来自链接的堆栈溢出挑战):

<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://server-which-responds-with-204.com'
      }
    }, 1)
</script>


此代码执行以下操作:


每次增加一个计数器
浏览器尝试导航
从当前页面,通过
window.onbeforeonload事件处理程序
设置一个计时器,每次触发
通过setInterval()的毫秒数,如果
它看到计数器增加,
将当前位置更改为
攻击者控制的服务器
该服务器通过
HTTP状态码204,没有
使浏览器导航
任何地方

07-24 16:31
查看更多