考虑以下场景:
Alice 希望在 Initech 工作期间浏览 Victor 的网站。Victor 的网站托管在 Initech 的 DNS 不与之对等的替代域名系统上。Eve(希望促进自由和开放的知识交流)托管一个包含 JS 的网页,该网页执行域名解析和 URL 屏蔽,这样当 Alice 访问victor.eve.tld
iFrame时,会victor.alt
根据 Victor 在victor.alt
DNS 记录中指定的静态 IP 地址加载。
对于无缝的域名屏蔽,Victor 必须将 CORS 授权放在他的站点的标头中,以围绕单一来源策略跳舞。但是,Victor 怀疑 Michael 正试图入侵 Eve 的 Web 服务器并将恶意 JS 植入 Eve 的网页(iFrame 的父级)。Victor 想要验证 Michael 在启用 CORS 授权之前没有修改父框架的内容。
Victor 拥有 Eve 网站的副本,并且可以包含不与 Eve 的服务器联系的材料的哈希值,因此如果他具有读取权限,他可以匹配内容。Micheal 无法访问 Initech 服务器,并且来自两个站点的连接都使用 TLS 保护:假设 Micheal 无法执行中间人攻击。
iFrame 是否可以验证父窗口的内容:
- 使用任何CORS 配置?
- 同时允许只读访问?
- 同时限制父窗口对 iFrame 内容的访问?
之前已经讨论过来自不受信任的缓存(具有受信任的连接,没有 MtM)的客户端 JS 验证,但这种情况需要通过正在获取的材料进行验证。还有许多关于使用iFrame 对不受信任的代码进行沙箱处理的帖子。但是,iFrame 沙盒问题往往围绕信任孩子的父窗口展开,大多数关于该主题的外部文献(框架破坏等)也是如此。
此外,Eve 的服务器不能主动参与该过程:她只能提供静态 HTML、JS 和 CSS 文件。Victor 无法通过 Eve 的服务器代理信息,他只能与自己的或第三方服务器交互。