Javascript 内容安全策略(CSP)块评估方法调用

Javascript 内容安全策略(CSP)块评估方法调用,javascript,node.js,content-security-policy,Javascript,Node.js,Content Security Policy,我正在使用nicEditor,在nicEditor中有一个名为eval的方法被CSP阻止。当我注释掉CSP代码时,它工作正常 Error: call to eval() blocked by CSP nicEdit.js:779:36 我的CSP代码: scriptSrc: ["'self'", "'unsafe-inline'"] 我也读了 提前感谢如果您确实需要使用包含eval的nicEditor(一开始可能不是个好主意),您可以添加以下指令: 我真的,真的,建议您只使用不同的编

我正在使用
nicEditor
,在
nicEditor
中有一个名为
eval
的方法被
CSP
阻止。当我注释掉
CSP
代码时,它工作正常

Error: call to eval() blocked by CSP     nicEdit.js:779:36
我的CSP代码:

scriptSrc: ["'self'", "'unsafe-inline'"]
我也读了


提前感谢

如果您确实需要使用包含
eval
nicEditor
(一开始可能不是个好主意),您可以添加以下指令:

我真的,真的,建议您只使用不同的编辑器,而不依赖于
eval
。在大多数情况下,这确实是一种安全风险


如果您需要一个替代方案,请查看示例。

如果您确实需要使用包含
eval
nicEditor
(一开始可能不是一个好主意),您可以添加以下指令:

我真的,真的,建议您只使用不同的编辑器,而不依赖于
eval
。在大多数情况下,这确实是一种安全风险


如果您需要其他选项,请查看示例。

相关行位于
nicEditorPanel
addButton
功能中(我的第682行):

将其替换为:

var type = (button['type']) ? (typeof(button['type']) == "undefined") ? null : window[button['type']] : nicEditorButton;
我在做谷歌浏览器扩展时遇到了这个问题。Chrome Extensions loader不允许我在CSP权限中使用“不安全评估”。无论如何,如上所述,出于安全原因,最好不要这样做。看看代码,它看起来像是在使用
eval()
根据字符串的名称调用构造函数


由于所有全局函数都是
窗口
对象的属性,因此我的更改以字符串形式调用构造函数的名称(
按钮['type']
)作为窗口的属性,而不是简单地对其求值。

所讨论的行位于
nicEditorPanel
addButton
函数中(我的第682行):

将其替换为:

var type = (button['type']) ? (typeof(button['type']) == "undefined") ? null : window[button['type']] : nicEditorButton;
我在做谷歌浏览器扩展时遇到了这个问题。Chrome Extensions loader不允许我在CSP权限中使用“不安全评估”。无论如何,如上所述,出于安全原因,最好不要这样做。看看代码,它看起来像是在使用
eval()
根据字符串的名称调用构造函数

由于所有全局函数都是
窗口
对象的属性,因此我的更改以字符串形式调用构造函数的名称(
按钮['type']
)作为窗口的属性,而不是简单地对其求值。

不要使用
eval()
。不要使用
eval()