我正在使用nicEditor
而在nicEditor
中有一个名为eval
的方法被CSP
阻止。当我注释掉CSP
代码时,它运行正常。
Error: call to eval() blocked by CSP nicEdit.js:779:36
我的CSP代码:
scriptSrc: ["'self'", "'unsafe-inline'"]
我还阅读了https://developer.chrome.com/extensions/contentSecurityPolicy
提前致谢
答案 0 :(得分:2)
如果您确实需要使用包含nicEditor
的{{1}}(这可能不是一个好主意),您可以添加以下指令:'unsafe-eval'
我真的,真的,建议您只使用不依赖eval
的不同编辑器。在大多数情况下,这确实是一种安全风险。
如果您需要替代方案,请查看ProseMirror例如。
答案 1 :(得分:0)
有问题的行位于(' who ', 'what ', ' hello from the other side ', ' this is slim shady ')
(' who ', 'what ', 'side', ' hello from the other ', ' this is slim shady ', 'd', 'w', 'a', 'g', 'oh my ')
的{{1}}函数中(对我来说是682行):
addButton
将其替换为:
nicEditorPanel
我刚刚遇到了制作Google Chrome扩展程序的问题。 Chrome扩展程序加载程序不允许我使用' unsafe-eval'在CSP权限。无论如何,如上所述,出于安全原因,最好不要这样做。看一下代码看起来好像是使用var type = (button['type']) ? eval('(typeof('+button['type']+') == "undefined") ? null : '+button['type']+';') : nicEditorButton;
根据String的名称来调用构造函数。
由于所有全局函数都是var type = (button['type']) ? (typeof(button['type']) == "undefined") ? null : window[button['type']] : nicEditorButton;
对象的属性,因此我的更改以String形式(eval()
)调用构造函数的名称作为窗口的属性,而不是简单地对其进行评估。