Content Security Policy (CSP)是一種Web安全機制,可以限制網頁內容的來源和資源,防止惡意腳本攻擊和跨站腳本攻擊 (XSS)。CSP可以通過HTTP響應頭部的Content-Security-Policy標頭添加到網頁中,指定哪些資源是被允許取得的。
舉例來說,假設我們有一個網站,其中包含以下內容:
<script src="https://cdn.example.com/script.js"></script>
<img src="https://example.com/image.jpg">
為了使用CSP,我們可以通過HTTP響應頭部添加以下設置:
Content-Security-Policy: default-src 'self' https://cdn.example.com
這個CSP設置指定了只允許自身網站 (self) 和 https://cdn.example.com 這個域名下的資源載入,所以如果有任何嘗試從其他的域名載入資源的行為,瀏覽器會擋下它們。
另外,CSP也可以用來防止XSS攻擊,例如:
Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-eval'
這個CSP設置指定只允許自身網站執行JS程式碼,並且禁止直接插入JS程式碼。這樣就可以防止嘗試通過插入惡意腳本攻擊網站的攻擊行為。
CSP可以幫助防止跨站點腳本攻擊(XSS)和點擊劫持等攻擊。
CSP可以限制允許的資源載入,預防通過任何不信任來源載入外部資源。
CSP可以解決降低沒有安全標準,因為它標準化了網頁內容與外部資源交互的方法。
CSP使開發人員可以定義允許載入的網站和腳本,而不是直接允許能夠執行的腳本。
CSP可以減少開發人員的負擔,因為它提供了一套網頁安全標準模板,可用於在應用程序中實施安全檢查。
由於CSP不允許執行不安全的腳本,所以它可以將大量的風險從應用程序中隔離。
CSP可以僅允許已知的安全源訪問網頁,以進一步增強安全性。
CSP如何避免Cross-site scripting (XSS)攻擊?
答案:CSP可以限制執行JavaScript的來源,進而避免XSS攻擊。使用CSP時,可以設置白名單,只允許特定的域名下的JavaScript腳本執行。如果有其他來源的腳本試圖執行,就會被擋下來。例如,可以在Content-Security-Policy頭信息中設置「script-src https://example.com」,這樣只有來自example.com的JavaScript腳本才能執行。
如何在CSP中設置嚴格的來源限制?
答案:可以使用「default-src」屬性設置CSP的嚴格來源限制。例如,可以使用「Content-Security-Policy: default-src ’none’;」禁止任何外部資源的請求。
如何在CSP中允許特定的iframe?
答案:可以使用"frame-src"屬性設置特定iframe的來源限制。例如,可以在Content-Security-Policy頭信息中設置「frame-src https://example.com」,這樣只有來自example.com的iframe才能載入。
如何在CSP中設置允許inline樣式?
答案:可以使用「style-src」屬性設置允許inline樣式。例如,可以在Content-Security-Policy頭信息中設置「style-src ‘self’ ‘unsafe-inline’」,這樣允許網頁中使用的inline樣式。
如何在CSP中設置不允許外部圖片載入?
答案:可以使用「img-src」屬性設置是否允許外部圖片載入。例如,可以在Content-Security-Policy頭信息中設置「img-src ‘self’」,這樣就只允許從同一域名下載入圖片。