设置 iframe 的内容安全策略?
Posted
技术标签:
【中文标题】设置 iframe 的内容安全策略?【英文标题】:Set Content Security Policy of an iframe? 【发布时间】:2019-05-25 03:50:51 【问题描述】:消费者网站(例如 nytimes.com)是否有办法确保其加载的 iframe 无法与任何服务器通信,并且只能访问 postMessage?这可以从托管 iframe 文档的服务器上完成。但我不想信任该服务器。
这就是我需要的:我想使用微妙加密存储不可提取的非对称密钥,使用由第三方审核的内联 JS 加载一些静态 html,我确信这是使用 SRI 加载的内容,最后将一些数据usibg postMessage传递给它,并通过覆盖postMessag来关闭该sanbox中的门,以保证用户代理的用户从那时起解密和显示的任何数据都不会泄露给其他任何人(假设用户代理遵循网络标准)。
用户如何知道他们可以信任 iframe?因为 iframe 会在门关闭后显示他们选择的一些熟悉的字符串,由相同的私钥解密。由于不可提取,没有服务器可以解密,所以它必须是用户信任的经过审核的安全 HTML + JS 环境。
但是用户和嵌入站点如何验证并确定 iframe 的内容安全策略是什么?
【问题讨论】:
用户只需要在注册过程中信任 iframe 的域,当他们选择他们的特殊短语来安慰自己时。这个短语也会出现在输入中的键盘焦点上,表示输入是安全的,以防止点击劫持。 您可能会问,如果代码经过审核并加载了 SRI,为什么我需要制定内容安全策略。首先,我可以在该环境中接收和运行任意代码。其次,因为用户需要信任环境,而消费者网站可能会欺骗用户并加载其他内容。用户在输入密码解锁环境之前需要知道 DOOR IS CLOSED。 【参考方案1】:好吧,原来 HTML 有“http-equiv”元标记,可以设置该 HTML 文档的内容安全策略。并且封闭站点可以使用 SRI 来确保它正在加载之前审核过的文档。
这样就可以得到封闭站点的信任。但是我不确定主流浏览器的用户如何验证
加载的 iframe 文档与之前加载的文档相同(用户可见子资源完整性)
加载的 iframe 文档具有正确的内容安全策略,除非他们查看源代码。
也许有人可以解决上述两件事,用户如何信任加载的文档以及门已关闭。网络使得不必信任 Internet 上的服务器以随时串通和更改代码变得非常困难。
【讨论】:
以上是关于设置 iframe 的内容安全策略?的主要内容,如果未能解决你的问题,请参考以下文章
内容安全策略框架祖先。 iframe 不会在 iOS10 中加载内容
尝试渲染 iframe:祖先违反了以下内容安全策略指令:“frame-ancestors 'none'”