【IT】CSP, Content Security Policy(內容安全策略)是什麼?設定

2024/11/13 突然被派了一個任務,要把 A頁面移到猛另一個功能底下,

並且前端規格要改成 default-src ‘self’、style-src ‘self’、script-src ‘self’

這個還是第一次看到,想說來記錄一下

Content Security Policy 是什麼?

Content Security Policy(內容安全策略)是一個電腦安全標準,防止跨站腳本攻擊(XSS),限制外部資料的使用,告訴瀏覽器說有哪些資源可以使用(白名單),瀏覽器就會像保鑣一樣幫你過濾客人,因為我們無法預期客人會帶來什麼風險,可以有避免網路攻擊,提高安全性

屬性

default-src ‘self’ 只允許自身網站的 js, css, font, img 等等。

script-src ‘self’ 只允許自身網站的 js

style-src ‘self’ 只允許自身網站的 css

怎麼設定

在設定 Content Security Policy (CSP) 時,可以在 HTTP Header 或 HTML 中的 <meta> 標籤內設定。CSP 的基本概念是指定哪些資源允許被載入,藉此提高網站的安全性。以下是幾種常見的設定範例:

方法一:使用 HTTP Header 設定

在伺服器端設置 CSP header,例如在 Apache 或 Nginx 的設定檔中,加入以下設定:

Apache:

<IfModule mod_headers.c>

Header set Content-Security-Policy “default-src ‘self’; script-src ‘self’ https://example.com; style-src ‘self’ ‘unsafe-inline’; img-src ‘self’ data: https://example.com;”

</IfModule>

Nginx:

add_header Content-Security-Policy “default-src ‘self’; script-src ‘self’ https://example.com; style-src ‘self’ ‘unsafe-inline’; img-src ‘self’ data: https://example.com;”;

方法二:在 HTML <meta> 標籤內設定

如果無法修改伺服器端設定,可以將 CSP 直接放在 HTML 的 <meta> 標籤中:

<meta http-equiv=”Content-Security-Policy” content=”default-src ‘self’; script-src ‘self’ https://example.com; style-src ‘self’ ‘unsafe-inline’; img-src ‘self’ data: https://example.com;”>

範例解釋

• default-src ‘self’: 預設來源限制為自身網站。

• script-src ‘self’ https://example.com: 限制 JavaScript 的來源為自身網站和 https://example.com。

• style-src ‘self’ ‘unsafe-inline’: 限制樣式的來源為自身網站,允許內嵌樣式(不推薦,但某些情況下必須使用)。

• img-src ‘self’ data: https://example.com: 限制圖片來源為自身網站、Data URLs 和 https://example.com。

注意事項

1. 使用 self:指允許當前來源的資源。

2. 避免 unsafe-inline 和 unsafe-eval:這些指令可能帶來安全風險,應謹慎使用。

3. 逐步調整政策:建議先使用 Content-Security-Policy-Report-Only 來測試設定,這樣可以避免因為過於嚴格的策略導致網站無法正常運行。

參考資料

  1. https://zh.wikipedia.org/zh-tw/%E5%86%85%E5%AE%B9%E5%AE%89%E5%85%A8%E7%AD%96%E7%95%A5
  2. https://ithelp.ithome.com.tw/articles/10307460
  3. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/default-src
  4. https://blog.darkthread.net/blog/csp-script-src/

本文部分由 ChatGPT 產生

Posted in IT