Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 启用CSP';在iframe中进行不安全的评估_Javascript_Iframe_Eval_Content Security Policy - Fatal编程技术网

Javascript 启用CSP';在iframe中进行不安全的评估

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) 我不知道一个被锁定的站点上的是否可能比它的父站

我需要将Vega js库(大量使用
new Function()
evals)嵌入一个CSP被锁定的站点(不允许使用eval)。我一直在探索两种选择,希望得到关于最佳路径的反馈:

  • nonce
    -通过
    nonce
    指令使用脚本提供eval,希望不会触发eval()错误。这个假设可能不正确——我仍在试图理解
    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
),但安全工程师不希望允许对所有站点进行
评估
。他们允许对特定库进行评估。啊,好吧。那么,您描述的
方法显然是唯一可行的选择。