Javascript 启用CSP';在iframe中进行不安全的评估
我需要将Vega js库(大量使用Javascript 启用CSP';在iframe中进行不安全的评估,javascript,iframe,eval,content-security-policy,Javascript,Iframe,Eval,Content Security Policy,我需要将Vega js库(大量使用new Function()evals)嵌入一个CSP被锁定的站点(不允许使用eval)。我一直在探索两种选择,希望得到关于最佳路径的反馈: nonce-通过nonce指令使用脚本提供eval,希望不会触发eval()错误。这个假设可能不正确——我仍在试图理解nonce的局限性 将Vega graph置于…,并通过消息与之通信。我不知道一个被锁定的站点上的是否可能比它的父站点有更宽松的安全设置(允许evals) 我不知道一个被锁定的站点上的是否可能比它的父站
new Function()
evals)嵌入一个CSP被锁定的站点(不允许使用eval)。我一直在探索两种选择,希望得到关于最佳路径的反馈:
-通过nonce
指令使用脚本提供eval,希望不会触发eval()错误。这个假设可能不正确——我仍在试图理解nonce
的局限性nonce
- 将Vega graph置于
,并通过消息与之通信。我不知道一个被锁定的站点上的…
是否可能比它的父站点有更宽松的安全设置(允许evals)
是否可能比它的父站点有更宽松的安全设置(允许evals)
实际上,
可以有一个比其父级更宽松的CSP策略。除非它是
,否则它不会从父级的CSP策略继承任何内容,并且与父级CSP策略完全没有关系
请参见中的答案以及中的CSP规范部分,其中包括“通过iframe
、对象
、或嵌入包含的任何资源”
nonce
-通过nonce
指令使用脚本提供eval,希望不会触发eval()错误。这个假设可能不正确——我仍在试图理解nonce
的局限性
有关nonce
工作原理的详细说明,请参见中的答案
但是,即使您使用nonce
来“白名单”特定脚本,也不允许该脚本使用eval
。有了CSP政策,允许使用eval
的唯一方法是指定不安全-eval'
。如果您指定了这一点,它将允许文档嵌入的所有脚本使用eval
——无法只允许特定脚本使用eval
,而不允许其他脚本使用eval
。第二个选项当前应该可以使用postMessage
。您说,“我需要嵌入Vega js库(大量使用new Function()
evals)进入一个CSP被锁定的站点(不允许使用eval)”,但是您说您正在考虑的一个选项是添加使用nonce
。如果通过“锁定”你的意思是你根本无法更改策略,那么你计划如何调整策略以包括nonce
源…@sideshowbarker我可以调整站点的策略(例如添加nonce
),但安全工程师不希望允许对所有站点进行评估。他们允许对特定库进行评估。啊,好吧。那么,您描述的
方法显然是唯一可行的选择。