Iframes已知用于在iframe中对内部的JavaScript 进行沙盒处理。但是,反过来是真的吗?内部框架是否保护其内容不在之外(在托管网页上)?我的基本测试表明他们这样做,但我找不到明确的文档。iframe可以保护其外部JavaScript的内容吗?
如果你很好奇,这是我用例:
的浏览器插件必须显示在第三方敏感的文字,不可信的网页。理想情况下,它将注入文本,使其不能通过在不受信任的网页上运行的JavaScript访问。用户可能会看到它; JavaScript可能不会。
Iframes已知用于在iframe中对内部的JavaScript 进行沙盒处理。但是,反过来是真的吗?内部框架是否保护其内容不在之外(在托管网页上)?我的基本测试表明他们这样做,但我找不到明确的文档。iframe可以保护其外部JavaScript的内容吗?
如果你很好奇,这是我用例:
的浏览器插件必须显示在第三方敏感的文字,不可信的网页。理想情况下,它将注入文本,使其不能通过在不受信任的网页上运行的JavaScript访问。用户可能会看到它; JavaScript可能不会。
用于分离父文档和iframed文档的JavaScript环境的机制在两个方向上的工作方式相同。
parent
和frameNode
是可能的,如果它们包含在同一起源文件postMessage
可以使用,即使在他们之间传递一个字符串他们不在同一个原点(但必须由收到该消息的文档来收听)。的浏览器插件必须显示在第三方敏感的文字,不可信的网页。理想情况下,它将注入文本,使其不能通过在不受信任的网页上运行的JavaScript访问。用户可能会看到它; JavaScript可能不会。
这听起来像是一种更好的解决方法,它使用在浏览器chrome中显示文本而不是嵌入页面本身的机制,例如,与铬popup api。
尽我所知,内容是受保护的。
Iframes的内容是(by default)视为来自不同来源。这会使same-origin policy发挥作用,防止每个页面访问其他的DOM。
但是,如果你做<iframe sandbox="allow-same-origin">...</iframe>
),那么可以访问iframe的内容。这里有一个重要的问题:
allow-same-origin
进入一个iframe?我不知道在这个明确的文件,但我的谷歌浏览器测试中说,编程改变沙箱属性对iframe中没有任何影响。是的,您可以动态更改属性,但它不起作用。
嘿,谢谢你的回答。我认为我的案例仍然需要iframe,因为我实际上用敏感文本替换了网页的现有元素。尽管我最终可能会使用弹出窗口,但是这些iframe应该替换网页中的实际元素。 – jonS90