【发布时间】:2018-01-10 23:51:47
【问题描述】:
我需要将 Vega-js 库(new Function() evals 的重度用户)嵌入到具有锁定 CSP(不允许 eval)的站点中。我一直在探索两种选择,并希望获得有关最佳途径的反馈:
-
nonce- 通过nonce指令提供 eval 使用脚本,希望不会触发 eval() 错误。这个假设可能不正确 - 我仍在尝试理解nonce的限制。 - 将 Vega 图放在
<iframe sandbox='allow-scripts'>...</>中,并通过消息与其通信。我不知道锁定站点上的<iframe>是否有可能比其父级具有更宽松的安全设置(允许评估)。
【问题讨论】:
-
第二个选项目前应该可以使用
postMessage。 -
您说,“我需要将 Vega-js 库(
new Function()evals 的重度用户)嵌入到具有锁定 CSP(不允许 eval)的站点中”,然后是其中一个选项你说你正在考虑添加nonce的使用。如果“锁定”意味着您根本无法更改政策,那么您计划如何调整它以包含nonce来源还不清楚…… -
@sideshowbarker 我可以调整站点的策略(例如添加
nonce),但安全工程师不想为所有站点允许eval。他们可以允许它用于特定的库。 -
嗯,好的。那么,您所描述的
<iframe>方法似乎绝对是唯一实用的选择。
标签: javascript iframe eval content-security-policy