2014-12-03 60 views
0

现状是否有可能有选择地限制iframe访问其父文档?

我有一个静态的文件(文件A),即我控制,其包含加载另一个文档(文件B),即我不控制iframe中。这两份文件都由我“拥有”,并且它们托管在同一个域中,实际上位于同一台服务器上。

我的问题

我可以限制文档B拥有文档A的编程范围的访问?我想揭露A到B的一些变量和函数,但没有提供给父窗口毯访问等

我知道,通过沙箱属性,我能够做关于父窗口访问的广泛的安全限制,但我正在寻找的是一种为某些 JavaScript对象提供访问权限的策略,但不提供其他访问权限。这不是关于XSS或域限制的问题。正如我所说的,所有这些文件都位于同一台服务器上,并且域名不存在问题。

回答

1

它确实取决于你想要允许的内容以及你想要隐藏的内容。你可以隐藏你的大部分代码和函数,把它放在一个巨大的闭包中。其他代码,即使是在同一个源代码中,也无法通过闭包进入你的代码或变量。然后,您可以将您想要的任何函数/方法公开为全局函数,并且这些函数可以提供对对象的有限访问。

// closure to protect code from tampering 
(function() { 
    // code in here can't be messed with from outside the closure 

    // this method can be called from the outside 
    // This function (when called) can return objects from withing the closure 
    // or modify objects within the closure 
    window.publicFunc1 = function() { 
    }; 
})(); 

你不能做的是控制从这个其他框架访问DOM。如果它们位于相同的原点,则它可以完全访问另一个帧的DOM。

如果您控制了一些基础设施,您可以创建一个技术上指向同一服务器的子域,然后您可以从子域和主域中的其他框架加载页面(反之亦然)。这会因为跨源保护而给予您真正的保护,并且您可以使用消息传递以受控方式进行通信。

相关问题