簡體   English   中英

Angular 5 & CSP - 拒絕將字符串評估為 JavaScript,因為“unsafe-eval”不是允許的腳本源

[英]Angular 5 & CSP - Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script

我目前正在嘗試向使用 Angular 5 構建的應用程序引入內容安全策略。我目前正在使用 index.html 中的meta標記實現 CSP,盡管我將來會更改它。 我已將以下內容插入到我的應用程序中

<meta http-equiv="Content-Security-Policy" content="script-src 'self'; img-src 'self' data:;media-src 'self'; object-src 'self' data: 'unsafe-eval'; style-src 'self' https://fonts.googleapis.com 'unsafe-inline';">

這幾乎滿足了我的需求,但是當我部署到測試服務器時,瀏覽器控制台會給我以下消息:

未捕獲的 EvalError:拒絕將字符串評估為 JavaScript,因為在以下內容安全策略指令中“unsafe-eval”不是允許的腳本源:“script-src 'self'”。

好的,所以我需要將'unsafe-eval'script-src指令中。 這不是一個真正的問題,但它似乎讓我擔心記住 eval() 是邪惡的!

對於希望使用 CSP 的 Angular 5 應用程序,是否必須在script-src指令中包含'unsafe-eval' 有沒有辦法可以保留防止使用eval()的安全功能? 是否有必要將其包含在內,因為 Angular 使用eval() 我假設 Content-Security-Policy 元標記的內容是正確的,盡管我確信可能並非如此。

我在 angular github https://github.com/angular/angular/issues/19142上閱讀了這個問題,但我不確定這個問題是否與我有關,因為我在我的應用程序中沒有使用 SystemJS 而是 webpack?

非常感謝提供幫助、答案和建議的建議。

我遇到了同樣的問題,我注意到在 --prod 模式下運行不會出錯(我使用的是 Angular 8)。

根據您的設置,您可以使用客戶端響應標頭來實施您的安全策略,因為這不會導致此錯誤。

如果您的問題僅與在調試模式下運行(使用元標記)有關,那么這不是適合您的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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