[英]Content Security Policy (CSP) block eval method call
我使用的是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
提前致謝
如果確實需要使用包含eval
nicEditor
(一開始可能不是一個好主意),則可以添加以下指令: 'unsafe-eval'
我真的, 真的 ,建議您只使用不依賴eval
的其他編輯器。 在大多數情況下,這確實是安全隱患。
如果您需要替代方法,例如可以看ProseMirror 。
有問題的nicEditorPanel
的addButton
函數中(對我來說是682行):
var type = (button['type']) ? eval('(typeof('+button['type']+') == "undefined") ? null : '+button['type']+';') : nicEditorButton;
替換為:
var type = (button['type']) ? (typeof(button['type']) == "undefined") ? null : window[button['type']] : nicEditorButton;
我只是在制作Google Chrome擴展程序時遇到了這個問題。 Chrome擴展程序加載程序不允許我在CSP權限中使用'unsafe-eval'。 無論如何,如上所述,最好不要出於安全原因。 看一下代碼,就好像它在使用eval()
基於String的名稱來調用構造函數。
由於所有全局函數都是window
對象的屬性,因此我的更改將String形式的構造函數的名稱( button['type']
)稱為window的屬性,而不是簡單地對其進行求值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.