最近為網誌更新了 WordPress 5.6,檢查網站健康,發現了 SSL警告:Not all recommended security headers are installed。其實只要在 .htaccess 加幾句設定就可以解決。
目錄
WordPress 網站健康 SSL 警告
如果你檢查網站健康時,遇上了以下的警告,依本文教學做便可解決。
Not all recommended security headers are installed
Your .htaccess
file does not contain all recommended security headers.
- HTTP Strict Transport Security
- Content Security Policy: Upgrade Insecure Requests
- X-XSS protection
- X-Content Type Options
- Referrer-Policy
- Expect-CT
這些 headers 的作用如下:
- HSTS (HTTP Strict Transport Security) – 在網域上設置此 header 後,瀏覽器將隨後通過 HTTPS 向您的網站發出所有請求。
- CSP: Upgrade Insecure Requests – 指示客戶端將該站點的所有不安全網址(通過HTTP提供的URL)視為已被替換為安全網址(通過HTTPS提供的URL)。這指令適用於需要重寫大量不安全的舊網址的網站。
- X-XSS protection – 如果檢測到跨網站指令碼 cross-site scripting(XSS)攻擊,將阻止頁面加載。
- X-Content Type Options – 強制瀏覽器不要「猜測」傳遞了哪種數據。 如果檔案類型是
.doc
,則瀏覽器應獲取一個.doc
文件,而不是其他文件(如.exe
應用程式)。 - Referrer-Policy – 僅在使用相同協議時設置引薦來源網址,而在降級時則不設置引薦來源網址(HTTPS-> HTTP)。
- Expect-CT (Certificate Transparency) – SSL 證書頒發機構需要單獨記錄頒發的證書,以防止欺詐。
修改 .htaccess
如果你能用 FTP 修改檔案,就在根目錄下找出 .htaccess
,在 # BEGIN WordPress
上面貼上以下 Recommended security headers
的設定。
# Recommended security headers
Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS
Header always set Content-Security-Policy "upgrade-insecure-requests;"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy: "no-referrer-when-downgrade"
Header always set Expect-CT "max-age=7776000, enforce"
# End Recommended security headers
位置如下:
# Recommended security headers
Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS
Header always set Content-Security-Policy "upgrade-insecure-requests;"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy: "no-referrer-when-downgrade"
Header always set Expect-CT "max-age=7776000, enforce"
# End Recommended security headers
# BEGIN WordPress
...
註:如要移除 HSTS,請把 max-age 設為 0,即 "max-age=0"
。
再重新檢測網站健康就好了。
