簡體   English   中英

內容安全策略(CSP)阻止評估方法調用

[英]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

有問題的nicEditorPaneladdButton函數中(對我來說是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM