当前位置: 首页 > 面试题库 >

框架克星克星…需要克星码

柳项明
2023-03-14
问题内容

假设您不希望其他网站将您的网站“框”为<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程序员,所以这对您来说是我的挑战: 嘿,克星,您能破坏帧破坏器吗?


问题答案:

我不确定这是否可行-但是,如果您无法打破框架,为什么不显示警告。例如,如果您的页面不是“首页”,则创建一个setInterval方法来尝试破坏框架。如果经过3或4次尝试后,您的页面仍不是首页,请创建一个div元素,该元素会覆盖整个页面(模式框),并显示一条消息和一个链接,例如…

您正在未经授权的框架窗口中查看此页面-(等等)潜在的安全问题)

点击此链接可解决此问题

不是最好的,但是我看不出他们可以用哪种方式来摆脱困境。



 类似资料:
  • 我有简单的Android应用程序,可以记录通话,它可以在Android 6三星设备上运行良好(使用MIC源和VOICE_COMMUNICATION)。但是,一旦三星设备更新到牛轧糖(例如S7 / S7 Edge),这些记录通话的方法就会失败:(MIC只录制我的声音,但不记录对手的声音,VOICE_COMMUNICATION根本不起作用。 有人能建议在这里能做些什么吗?

  • 处理注释 mixin 的杰克逊代码是否可以由第三方重用来混合非杰克逊注释? 处理混合蛋白的核心杰克逊类是什么?

  • 1,盒子模型,区别,用处(标准和怪异) 2,介绍了实习项目的难点和优化点(说了比较久) 3,vue2响应式原理 4,vue2和vue3区别 5,http和https 6,tup和upd区别 7,反问

  • 问题内容: 我正在测试 PHP 与 Java 。 爪哇 的PHP 除了不是由Java编码并由PHP转换为%2A的“星号”字符,所有这两个函数的字符似乎都以相同的方式编码。哪种行为应该是“正确的”行为(如果有)? 注意:我也尝试过-没有运气。 问题答案: 可以在URL中使用(但也可以采用编码形式)。 RFC1738:统一资源定位符(URL)声明以下内容: 保留: […] 通常,当八位字节由字符表示并

  • 我正在使用cmake Gui构建开罗。当我点击“配置”时,Cmake显示以下错误: 找不到PIXMAN,尝试在系统变量PIXMAN中设置PIXMAN根文件夹的路径(缺少:PIXMAN_LIBRARIESPIXMAN_INCLUDE_DIRS) 找不到ZLIB(缺少:ZLIB_LIBRARYZLIB_INCLUDE_DIR) C:/cmake-3.7.0-rc1-win32-x86/share/cm

  • 本文向大家介绍JS实现星星海特效,包括了JS实现星星海特效的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JS实现星星海特效的具体代码,供大家参考,具体内容如下 知识点 1.CSS使用@keyframes自定义动画,使用animation调用自定义动画 2.opacity 透明度。从 0.0 (完全透明)到 1.0(完全不透明) 3.CSS中transform 4.animation