没有源的 iframe 之间的同源策略 -- iframeception

Same Origin Policy between iframes without origins -- Iframeception

提问人:AnonBird 提问时间:11/16/2023 更新时间:11/16/2023 访问量:25

问:

我们的应用程序过去常常使用以下工作代码嵌入第三方,而不会过于谨慎:

<iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms" srcdoc="<script src='https://thirdparty.com/script.js'></script>"></iframe>

我希望删除以防止该第三方访问我们域中的任何内容,因为第三方不需要它。allow-same-origin

但是,碰巧此脚本会创建一个新的 iframe(在我们拥有的 iframe 沙盒中)。iframe src 是,第一个 iframe 与它的子 进行通信。about:blankcontentWindow

由于 .现在它已被删除,站点的 iframe 和 iframe 的子级似乎都共享一个源,同源策略不接受该源,并导致以下错误:allow-same-originnull

Uncaught DOMException: Failed to read a named property 'document' from 'Window': Blocked a frame with origin "null" from accessing a cross-origin frame.

恢复,这是以下的起源:sandbox="allow-same-origin allow-scripts allow-popups allow-forms"

site.com
  |===> iframe A (origin: site.com)
        |===> iframe B (origin: site.com)

这是起源sandbox="allow-scripts allow-popups allow-forms"

site.com
  |==> iframe A (origin: null)
       |===> iframe B (origin: null)

这是我希望的起源:

site.com
  |==> iframe A (origin: some origin that is not site.com ?)
       |===> iframe B (origin: some origin that is not site.com ?)

我有哪些选择,以便 iframe 和 iframe 的子项共享相同的源,而我们的网站和 iframe 不共享?

iframe 同源策略

评论

0赞 AnonBird 11/16/2023
请注意,由于我控制了 的内容,我最终可以添加一个额外的脚本,该脚本将为 iframe 的创建创建创建短路,以便在创建之前更改它的某些属性,但是该怎么办?srcdocB

答: 暂无答案