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

JavaScript帧分解器…需要分解器代码

长孙兴德
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()计时器

问题答案:

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

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

点击此链接可解决此问题

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



 类似资料:
  • 本文向大家介绍复杂的javascript窗口分帧解析,包括了复杂的javascript窗口分帧解析的使用技巧和注意事项,需要的朋友参考一下 什么是窗口分帧?       窗口分帧就是把一个浏览器文档窗口分隔成多个窗口,每个窗口都可以显示一个独立的网页文件,每个帧(即页面)都有自己的url。 帧窗口该如何创建?   帧通常是由<frameset>和<frame>标记创建的。但在HTML 4中,<if

  • 分离器 分离器是使得ffmpeg能从特定类型文件中读取多媒体流的组件元素。 当编译ffmepg时,所有支持的分离器都默认被包含,你可以通过编译配置脚本中的--list-demuxers列出所有支持的分离器。 你也可以通过配置--disable-demuxers禁用所有的分离器,如果要在此基础上允许单独的分离器可以选用--enable-demuxer=DEMUXER形式配置,也可以在默认情况下通过-

  • 问题内容: 在下面的: 我知道any(…)内部是一个生成器对象。我不明白的是缺少括号-如果括号属于any()函数,在生成器表达式周围是否应该有另一组括号? 谢谢。 问题答案: 当仅在一个参数中使用函数调用时,可以省略括号,生成器表达式语法专门允许使用该括号。 仅带有一个参数的调用可以省略括号。有关详细信息,请参见“通话”部分。

  • 默认情况下,Eloquent会将创建的和更新的列转换为Carbon实例。检索$dates属性中列出的属性时,它们将自动转换为Carbon实例,允许您对属性使用Carbon的任何方法。 我有以下日期属性-我还没有包括created_at和updated_at列,因为这些是按照上面的默认转换: 然后,我在模型上有以下访问器: 但是,上述操作会引发以下错误: 如果我将该方法更改为以下方法,它将起作用:

  • 本文向大家介绍分类解析jQuery选择器,包括了分类解析jQuery选择器的使用技巧和注意事项,需要的朋友参考一下 基本选择器:   #id            根据Id匹配一个元素   .class            根据给定的类名匹配一个元素   element           根据元素名匹配一个元素   *             匹配所有元素   selecttor1,selec

  • 本文向大家介绍代码详解javascript模块加载器,包括了代码详解javascript模块加载器的使用技巧和注意事项,需要的朋友参考一下 定义 使用 以上就是本次分享的全部代码内容,大家可以测试下,如果还有任何不明白的地方可以在下方的留言区讨论,感谢大家对呐喊教程的支持。