現在常見是在 Web 伺服器的配置上去,例如 NGINX、Apache 建立規則之外,還得考量到有些代管主機可能沒有存取許可權,所以無法加入 Security Headers 執行安全標頭,遇到這種情況,可以透過 Cloudflare 將覆蓋源站任何設定,這是最簡單方法。
不管是前端、後端,都有HTTP安全相關的標頭是必要性,經常被大眾所忽視標頭的安全標頭重要性,舉例來說,不管那一個瀏覽器平台,只要收到 response 時就會執行相對應的保護機制,可避免駭客攻擊植入惡意網站、劫持以及提取內容等攻擊對象,才能提升強化網站的安全性。
建立轉換規則
在 Cloudflare Dashboard 中,規則 → 轉換規則 → 選擇修改回應標題建立規則
除了自訂名稱之外,必須要 SSL/HTTPS 傳入連線,在之前先檢查是否有設置如下:
- 一律使用 HTTPS:ON
- 自動改寫 HTTPS:ON
確認有設定 HTTPS 後,再往下拉,除了設定 Link 移除之外,以下設定標頭名稱規則參考,依據你的需求來設置規則,建立好後,就可部署上去了~
Content-Security-Policy
為了內容安全策略保護網站免受 XSS , CSP 攻擊,可以設定允許第三方來源白名單。
- default-src
- frame-src
- font-src
- script-src
- img-src
Permissions-Policy
權限策略標頭以控制頁面上瀏覽器功能的使用,包括 <iframe> 元素內容,確保站點的安全性和隱私性。
Referrer-Policy
訪客在網站有連結連到外部網站,referrer 要包含怎樣的允許資訊記錄。可增加隱私權。
- no-referrer:不發送 referrer 資訊
- origin:referrer 發送的資訊僅紀錄 origin
- strict-origin:HTTPS 網站協定降級連結到 HTTP (no SSL)網站,這種情況不發送 referrer 資訊
- no-referrer-when-downgrade (default):與 strict-origin 相同
- origin-when-cross-origin:跨域時候, 會發送 referrer 資訊
- same-origin:需同網站時, 才會發送 referrer 資訊,否則不會記錄
- strict-origin-when-cross-origin:這比較嚴格模式,跨域跟同網站需要相同 HTTPS 網站協定,才會 referrer 記錄
- unsafe-url:忽略規則,直接全部記錄
Strict-Transport-Security
簡稱 HSTS,讓網頁伺服器宣告瀏覽器只使用安全的 HTTPS 連線進行連結,並確保使用者不會只是點過重大安全警告,max-age 代表強制維持多少時間,一般為一年 31536000 秒,includeSubDomains 包含子網域,若max-age=0,代表disable。
X-XSS-Protection
瀏覽器偵測到被 XSS 攻擊,會依屬性對應做反映。
- 0:不啓用 XSS 過濾
- 1:啓用 XSS 過濾,遇到 XSS 攻擊時,會刪除不安全,但是不會封鎖
- 1; mode=block:啓用 XSS 過濾,遇到 XSS 攻擊,不會把網頁加載頁面
X-Frame-Options
是否允許 iframe、object 嵌入,防禦惡意網站、劫持以及提取內容等攻擊
- DENY:不允許任何網站用 iframe 的形式嵌入
- SAMEORIGIN:自己的網站想使用 iframe 嵌入,才要用這個
- ALLOW-FROM:建立允許 list 白名單,讓可以指定第三方網域嵌入
X-Content-Type-Options
阻止瀏覽器 Content-Type 被竄改不符 mime type,設成 nosniff 可阻止這種行為。
你有 Google Adsense 廣告的話,不建議用 Content-Security-Policy 規則,避免會阻擋第三方不少不同網域的連結。
檢測 Security Headers 方式
基本上提供有三種工具可檢測,給你做測試參考
- Really Simple SSL Scan:https://scan.really-simple-ssl.com/
- Security Headers Probably:https://securityheaders.com/
- Atatus Security Header:https://www.atatus.com/tools/security-header
希望有幫得上你使用 Cloudflare 功能設定,能保護你網站的 Security Headers 安全標頭。