已知iframe用于沙盒化内部 iframe。但是,反过来是真的吗? iframe会保护其内容免受JavaScript 外部(在托管网页上)的影响吗?我的基本测试建议他们这样做,但我找不到明确的文档。
如果你很好奇,这是我的用例:
浏览器扩展程序必须在第三方不受信任的网页上显示敏感文本。理想情况下,它会注入文本,使得在不受信任的网页上运行的JavaScript无法访问该文本。用户可能会看到它; JavaScript可能没有。
答案 0 :(得分:1)
分离父文档和iframed文档的JavaScript环境的机制在两个方向上的工作方式相同。
parent
和frameNode
包含同一来源的文档,则可以通过postMessage
访问其他环境浏览器扩展程序必须在第三方不受信任的网页上显示敏感文本。理想情况下,它会注入文本,使得在不受信任的网页上运行的JavaScript无法访问该文本。用户可能会看到它; JavaScript可能没有。
这听起来像使用一种机制来更好地解决,该机制在浏览器chrome中显示文本而不是嵌入页面本身,例如使用Chrome popup api。
答案 1 :(得分:-1)
我可以说,内容受到保护。
内部框架'内容(by default)被视为来自不同的来源。这会使same-origin policy发挥作用,阻止每个页面访问其他页面。 DOM。
但是,如果您执行<iframe sandbox="allow-same-origin">...</iframe>
),则可以访问iframe的内容。这是一个重要的问题:
allow-same-origin
设置为iframe ?我不知道有关此问题的明确说明,但我在Google Chrome中的测试表明以编程方式更改沙箱属性对iframe没有影响。是的,您可以动态更改sandbox
属性,但不起作用。