iframe可以保护其内容免受外部JavaScript的攻击吗?

时间:2014-04-01 00:49:30

标签: javascript html security iframe

已知iframe用于沙盒化内部 iframe。但是,反过来是真的吗? iframe会保护其内容免受JavaScript 外部(在托管网页上)的影响吗?我的基本测试建议他们这样做,但我找不到明确的文档。

如果你很好奇,这是我的用例:

  

浏览器扩展程序必须在第三方不受信任的网页上显示敏感文本。理想情况下,它会注入文本,使得在不受信任的网页上运行的JavaScript无法访问该文本。用户可能会看到它; JavaScript可能没有。

2 个答案:

答案 0 :(得分:1)

分离父文档和iframed文档的JavaScript环境的机制在两个方向上的工作方式相同。

  • 他们有自己的环境
  • 如果parentframeNode包含同一来源的文档,则可以通过postMessage访问其他环境
  • {{1}}可用于在它们之间传递字符串,即使它们不在同一个源上(但必须由接收该消息的文档进行监听)。
  

浏览器扩展程序必须在第三方不受信任的网页上显示敏感文本。理想情况下,它会注入文本,使得在不受信任的网页上运行的JavaScript无法访问该文本。用户可能会看到它; JavaScript可能没有。

这听起来像使用一种机制来更好地解决,该机制在浏览器chrome中显示文本而不是嵌入页面本身,例如使用Chrome popup api

答案 1 :(得分:-1)

我可以说,内容受到保护。

内部框架'内容(by default)被视为来自不同的来源。这会使same-origin policy发挥作用,阻止每个页面访问其他页面。 DOM。

但是,如果您执行<iframe sandbox="allow-same-origin">...</iframe>),则可以访问iframe的内容。这是一个重要的问题:

  • 恶意JavaScript是否可以通过编程方式将allow-same-origin设置为iframe

我不知道有关此问题的明确说明,但我在Google Chrome中的测试表明以编程方式更改沙箱属性对iframe没有影响。是的,您可以动态更改sandbox属性,但不起作用。