如您所見,該頁面有問題。例如,徽標圖片無法加載。另一個問題就是頁面樣式 (CSS)。 

調試錯誤

現在讓我們嘗試獲取有關問題原因的更多詳細信息。右鍵單擊網頁并選擇瀏覽器檢查工具。在該工具內,導航到控制臺選項卡。您應該會找到類似以下的報告:

Angular 內容安全策略指南:它是什么以及如何啟用它圖像

從上面的報告中,我們可以看到為什么我們的圖片沒有加載。我們還可以看到為什么我們的內聯 CSS 不起作用。這兩個錯誤都是由于內容安全策略指令造成的。 

第一個錯誤是:

Refused to load the image 'http://localhost:4200/favicon.ico' because it violates the following Content Security Policy directive: "img-src https://*"

該消息不言自明。在我們的 CSP 中,我們指定我們的網站應僅通過 HTTPS 加載圖像。修復此錯誤的一種方法是允許來自同一來源的非 HTTPS 圖像。我們可以通過將“self”作為 img -src指令的來源來做到這一點。 

下一個錯誤輸出以下消息: 

Refused to apply inline style because it violates the following Content Security Policy directive: "default-src 'self'".

為了解決這個問題,我們可能需要添加 unsafe-inline。但是,除非必要,否則您應該避免在您的網站上允許內聯腳本。 

現在我們只剩下一個錯誤;它輸出以下消息: 

Refused to load the image 'data:image/svg+xml;base64,PHN2... QwLjl6IiAvPgogIDwvc3ZnPg==' because it violates the following Content Security Policy directive: "img-src https://* 'self'".

與第一個錯誤一樣,此錯誤會影響圖像加載。請注意,此圖像不是來自 HTTPS 源,也不在原始文件系統上。為了修復此問題,我們將data:添加到img-src指令中。 
修復所有錯誤后,我們的頁面加載情況如下,所有圖像和樣式均正常:

Angular 內容安全策略指南:它是什么以及如何啟用它圖像

請注意,控制臺選項卡中不再有令人討厭的紅色錯誤消息。恭喜! 

這是不會破壞我們的圖像或 CSS 的新內容安全策略的完整代碼。

<meta http-equiv="Content-Security-Policy"
content="default-src 'self' 'unsafe-inline'; img-src https://* 'self' data:;">

結論

內容安全策略是現代 Web 瀏覽器中的一項重要安全功能。使用 CSP 并遵循其他安全最佳實踐可以消除您網站上的大多數XSS 相關攻擊。在這篇文章中,我們向您展示了什么是 Angular 內容安全策略。我們還向您展示了如何啟用它。此外,我們還能夠練習如何檢測和修復 Angular 內容安全策略錯誤。?

調試 Angular 內容安全策略錯誤時,一個不錯的起點是瀏覽器控制臺。大多數現代 Web 瀏覽器(如 Chrome 和 Firefox)都提供控制臺功能。 

最后,確保僅通過將策略更改為有效且仍然安全的新值來修復 Angular 內容安全策略錯誤。 

文章來源:Angular Content Security Policy Guide: What It Is and How to Enable It

上一篇:

Spring Broken Access控制指南:示例及預防

下一篇:

Laravel XML外部實體(XXE)指南:示例和預防
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費