代码之家  ›  专栏  ›  技术社区  ›  Iain Fraser

firefox中是否有允许父文档访问另一个域中iframe的dom的设置?

  •  2
  • Iain Fraser  · 技术社区  · 15 年前

    注意Firebug如何访问跨域iframes的DOM,甚至允许您修改它们?我想知道是否有一个firefox插件扩展或配置设置允许我们的内部网上的一个页面这样做。

    更长的解释:

    我在接待区有两个“售货亭”,公众可以使用。当我们在kiosk模式下运行时(全屏,没有Chrome),我创建了一个由菜单和iframe组成的小型Web应用程序。该菜单允许用户浏览已批准的网站,并执行打印等操作。它还利用弹出窗口的请求,而不是将它们覆盖在模式iframe中,而不是允许浏览器和OS Chrome被公开——这打破了“kiosk”体验。

    很明显,这对任何内部的东西都很有效,因为它们都在同一个域中。当浏览外部站点时,它会变得更加棘手,因为XSS保护开始起作用,并且您在iframe中看不到dom。

    我还尝试在同一个域上使用基于Web的代理服务器(例如phproxy),它工作正常,但在某些情况下,它不起作用——一个大的例子是我们网站表单上的captcha。所以这对我来说几乎不是一个选择。


    基本上,我认为唯一适合我的解决方案是使用安全设置或插件以某种方式修改浏览器。有什么想法吗?

    非常感谢你们的时间和考虑。非常感谢。

    ——Iain

    3 回复  |  直到 12 年前
        1
  •  1
  •   flpmor    15 年前

    有一种方法可以让未授权的JavaScript代码(从网页加载)在Firefox中请求更多的权限。这是一个老的、非标准的API,它提示用户获得权限,如果接受,则允许JavaScript执行普通JavaScript无法执行的操作。其中之一就是绕过同一来源政策。

    样例代码:

    try { 
        // ask user for permission
        netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
      } catch (e) {
        // user refused permission
        alert('Permission "UniversalBrowserRead" was denied.'); 
      }
      //Should now be capable of bypassing same origin policy if user accepted
    

    因为kiosk浏览器不会经常重启(我想),所以只需要接受一次对话。不确定这是否是最优雅的解决方案,但至少现在可以(API已经过时,可能会消失)。

    以下是详细信息的链接: http://www.mozilla.org/projects/security/components/signed-scripts.html#privs-list

    在寻找确切的特权名称时,我发现了这个关于火狐安全策略的页面。这将是一个更好的解决方案。我从未使用过它,因此我无法提供更多信息,但下面是链接,可能是开始查找的好地方:

    http://www.mozilla.org/projects/security/components/ConfigPolicy.html

    希望这有帮助!

        2
  •  0
  •   Iain Fraser    15 年前

    我找到一个名为CrossDomain的加载项。这个插件还没有为新版的火狐更新。最后,我通过编写一个HTA并使用Internet Explorer呈现引擎(这让我的IT经理很高兴:)解决了整个问题。这里是到CrossDomain的链接,以防有一天它能帮助某人。感谢大家提交的资料。

    https://addons.mozilla.org/en-US/firefox/addon/13004/

        3
  •  0
  •   NoBugs    12 年前

    为什么不使用 Greasemonkey ,它将允许您在任何页面上运行脚本。