【问题标题】:prevent parent DOM manipulation for a child iframe script防止子 iframe 脚本的父 DOM 操作
【发布时间】:2011-07-20 05:01:17
【问题描述】:

我有一个页面包含框架内同一域中的另一个页面。是否可以防止框架页面中的脚本可以操作首页 DOM(例如添加元素或脚本)?

【问题讨论】:

    标签: javascript dom iframe same-origin-policy


    【解决方案1】:

    您可以尝试摆脱“危险”函数,但保存对它们的匿名引用,例如......

    (function(){
        var hiddenrefs = {};
    
        hiddenrefs.dGetElementById = document.getElementById;
        document.getElementById = null;
    })();
    

    等等。然而,这将是一项非常乏味的工作,而且无论如何都注定要失败。如果这是试图让用户在 iframe 内的受控环境中运行 Javascript,那么这是一种被误导的安全形式。 iframe 可以发出top.location = "http://www.myevilpage.com",在这种情况下,无论如何它对你来说已经结束了。 (即使使用不同的域也是如此。iframe 仍然可以重定向用户和各种讨厌的东西,即使严格来说它无法访问父级的 DOM。)如果不过滤,让用户运行 JS 代码永远不会安全恶意代码的源代码,即使过滤它也是相当不安全的,因为它很容易绕过过滤。许多人尝试过,许多人失败了。我建议永远不要让用户运行 Javascript。

    【讨论】:

      【解决方案2】:

      最好的解决方案可能是在 iframe 上使用 HTML5 沙盒属性,它(默认情况下)显式禁用脚本和对父 DOM 的同源访问。

      http://msdn.microsoft.com/en-us/hh563496.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-14
        • 2014-07-25
        • 1970-01-01
        • 1970-01-01
        • 2011-02-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多