【问题标题】:Securing script injection and execution on third party iframes保护第三方 iframe 上的脚本注入和执行
【发布时间】:2011-09-27 15:10:48
【问题描述】:

我希望能够将脚本注入到我自己的服务器提供的页面内的 iframed 页面(托管在第 3 方服务器上)(以可视化 wysiwygapp 的更改)。

由于我在“目标”页面上有一个小存根脚本,我猜我可能只是有一个方法允许任意脚本执行传递给它的任何内容。显然,这听起来并不安全,因为它会为一些简洁的 XSS 打开一个攻击向量。我保护它的一个想法是在我要运行的脚本旁边传递某种令牌,存根客户端代码将与服务器进行检查,然后才执行脚本。这有意义吗?有人可以指出我的任何先例吗?

非常感谢

【问题讨论】:

  • 没有其他方法可以解决这个问题吗? iframe 解决方案听起来……有风险。
  • 它确实有点——但由于我需要实时显示更改,我能想到的唯一其他解决方案是通过我的服务器代理页面。这不会很酷(网址重写,大量 bw 等)
  • 您将如何在“目标”页面中访问这个提议的脚本?浏览器根本不会让你触摸它。
  • 我有一个小存根脚本,我可以添加一个方法 get_script_from_url_and_execute(url) 等,并在我猜想在 iframe 中加载 url 时通过查询字符串传递 url
  • 好吧,如果 your 代码可以通过 HTTP 参数传入脚本,那么 anybody 可以。这是好事还是坏事取决于内容。

标签: javascript security


【解决方案1】:

首先,听起来您在实际 iFrame 中控制了少量代码。与其建议允许其他人通过该存根注入脚本(这会使您面临各种攻击),不如将您想要的实际“安全”代码放在 iframe 中,然后通知一个结果的父框架?

其次,关于安全跨域 iframe 通信的网页数不胜数。由于我仍然不确定您到底要做什么,您可能需要自己进行搜索并找到最适合您的机制。 Google 搜索“安全跨域 iframe 通信”会发现大量信息。

第三,我遇到并最喜欢的文章是Cross Domain Communication with iFrames,最安全的技术看起来像postMessage,因为它只共享数据,不允许代码调用,并且实际上可以检查它信任的来源postMessage 仅在较新的浏览器中可用,因此您必须回退到也适用于旧浏览器的其他技术之一。这是一个jQuery plugin,它在可用时使用 postMessage,在不可用时回退到另一种技术。

如果这些信息还不够,请告诉我们更多关于您尝试在 iFrame 中执行的操作或您尝试在两个来源之间传递的信息?

【讨论】:

  • 考虑到问题,我认为这与可行的答案差不多。
  • 太好了,非常感谢——互联网上有很多负载,但我想确保我没有遗漏一些明显的东西 :)。事实证明,在某种程度上,我所需要的只是一个触发器(现在我想起来了),而不是任意代码执行:)。为链接干杯,这些会派上用场的!
猜你喜欢
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
  • 2014-02-27
  • 2017-08-08
  • 2013-01-02
  • 2021-06-04
  • 1970-01-01
相关资源
最近更新 更多