WordPress Security Headers 是 由 Web Server 回傳給瀏覽器的一組 HTTP 標頭,
用來「限制瀏覽器能做什麼、不能做什麼」。它不是修漏洞,而是降低漏洞被利用的成功率跟增加攻破網站的困難度
一、為什麼 WordPress「一定要設」Security Headers?
WordPress 生態=高風險目標
- 外掛多、主題多
- 第三方 JS 多(廣告、追蹤、GA、FB)
- 外掛品質參差不齊
就算你自己寫得很乾淨,
外掛一個 XSS 漏洞就全站陪葬
二、設定 Security Headers 的實際好處
1. 防止 XSS(最重要)
Content-Security-Policy
沒設 CSP
- 任何 inline script 都能跑
- 外掛被插
<script>alert(1)</script>就 GG
有設 CSP
- 只允許特定來源 JS
- inline script 預設不能跑
👉 XSS 成功率直接下降 80% 以上
2. 防止 Clickjacking(iframe 釣魚)
X-Frame-Options: SAMEORIGIN
防止:
- 網站被嵌進別人頁面
- 用透明按鈕誘導你點擊(後台操作)
👉 對 WordPress 後台特別重要
3. 防止瀏覽器亂猜檔案類型
X-Content-Type-Options: nosniff
防止:
.jpg被當成 JS 執行- 上傳檔案被惡意利用
👉 對有上傳功能的站(媒體、會員)很重要
4. 強制 HTTPS(SEO + 安全)
Strict-Transport-Security (HSTS)
效果:
- 瀏覽器永遠只走 HTTPS
- 防中間人攻擊
- Google 加分項目
👉 Cloudflare + WordPress 必設
5. 限制 Referer 洩漏資料
Referrer-Policy
避免:
- URL 中的 token、參數被送到第三方
- 追蹤、外洩敏感資訊
6. 提升 SEO 與信任度(間接)
- Lighthouse Security 分數↑
- Google PageSpeed 建議項目
- 減少惡意 JS 被插入 → 不被標示為「此網站可能有害」

三、htaccess 設定 Security Headers
在 .htaccess 增加下方程式。
<IfModule mod_headers.c>
##########################################
# HTTPS / HSTS 強制安全連線
##########################################
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
##########################################
# X-Frame-Options (防止 Clickjacking)
##########################################
Header always set X-Frame-Options "SAMEORIGIN"
##########################################
# X-Content-Type-Options (防止 MIME 偽裝)
##########################################
Header always set X-Content-Type-Options "nosniff"
##########################################
# Referrer Policy (保護隱私)
##########################################
Header always set Referrer-Policy "strict-origin-when-cross-origin"
##########################################
# X-XSS-Protection (舊版瀏覽器 XSS 防護)
##########################################
Header always set X-XSS-Protection "1; mode=block"
</IfModule>
<IfModule mod_headers.c>
Header always set Content-Security-Policy "default-src 'self' https:; img-src 'self' data: https:; media-src 'self' https:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; style-src 'self' 'unsafe-inline' https:; font-src 'self' data: https:; connect-src 'self' https:;"
</IfModule>
<IfModule mod_headers.c>
Header always set Permissions-Policy "geolocation=(), camera=(), microphone=(), payment=(), usb=(), fullscreen=(self), autoplay=(self)"
</IfModule>
之後至 https://securityheaders.com/ 測試一下。分數應該是 A 。要得到 A+ 得看網站所使用的外掛跟連接分析後調整 Content-Security-Policy 這個 Header 。不然設太嚴可能網站前後台會有問題。










