安全標頭深度檢查
安全標頭是伺服器在每個 HTTP 回應中附帶的指令,用來讓瀏覽器開啟預設不啟用的保護:攔截注入腳本、強制 HTTPS、拒絕被嵌入框架、停止 MIME 嗅探。輸入一個 URL,本檢查器會抓取最終回應,按 100 分制為六個標頭評分,逐項顯示它實際找到的值、用一句話說明風險,並為缺失或偏弱的標頭給出可貼上的 Nginx 或 Apache 設定。如果你只想要快速版,網站健康檢查的整體報告裡已經包含一個安全標頭子分數——本頁是深度版:只有逐項等級和修復,別無其他。
最後更新:
想持續監控這個網站?用 myeventwatch 免費監控——到期和停機提醒,無需綁卡。
深度版,與健康檢查的快速分數並存
網站健康檢查回答的是一個寬泛的問題——這個網站整體健康嗎?——並把安全標頭折算成眾多子分數之一。那是例行體檢的正確形狀,但它無法告訴你哪一個標頭丟了分、你的伺服器實際傳送了什麼值、或者該往設定裡貼上什麼來修復它。本頁就是為後續修復工作而存在的:一次抓取、六個被評分的標頭、一個字母等級,並且為每個缺失或偏弱的標頭給出精確的 Nginx 與 Apache 設定行。這裡沒有任何黑箱——完整的評分表就公佈在下方的事實部分,而且它正是檢查器評分所依據的那張表。
檢查的運行方式:檢查器請求你輸入的 URL、跟隨重新導向,並為最終回應的標頭評分——也就是瀏覽器真正用來建構頁面的那個回應。這是一次普通 HTTP 抓取,不是瀏覽器:不執行 JavaScript、不載入子資源,登入後或只在其他路徑上出現的標頭不會被看到。分數只衡量一個具體的層面——這六項面向瀏覽器的保護是否存在且足夠強——僅此而已。一個網站可以得 100 分卻仍然帶有應用層漏洞;也可以得 F 卻從未被入侵。把等級當作一份帶權重的加固清單,而不是對整個網站安全性的判決。
按影響順序修復
大部分分數贏回來都很便宜。X-Content-Type-Options、框架防護和 Referrer-Policy 各是一行設定,在普通網站上不會破壞任何東西。Strict-Transport-Security 也是一行,但只有當每個頁面和子網域都真的能透過 HTTPS 正常運作時再傳送它——一年的 max-age 是瀏覽器會要求你兌現的承諾。Permissions-Policy 需要花十分鐘想清楚你的頁面真正使用哪些瀏覽器功能。Content-Security-Policy 分數最高、風險也最大:先以 Content-Security-Policy-Report-Only 的形式部署,觀察違規報告,修好被破壞的東西,然後再強制啟用。配套指南安全標頭詳解逐項說明每個標頭到底攔截什麼,以及為什麼修復順序是上面這個順序。
相鄰的檢查:傳輸安全是這個故事的另一半——SSL 評分器為 TLS 設定本身打分,而本頁為伺服器在那條連線上所說的話打分。想要包含標頭、可用性、DNS 和憑證到期在內的寬泛例行體檢,請回到網站健康檢查。
關於方法的一點說明:結果是某一時刻一次抓取的快照。CDN 和多伺服器部署可能對不同請求回傳不同的標頭集合,因此遇到意外的結果時,值得先重新檢查一次再改設定——改完之後也值得再查一次,因為在源站加上的標頭並不總能穿過它前面的代理。
公佈的評分表
| Content-Security-Policy — 35 分 | 「好」意味著一個被強制執行的策略(Report-Only 不算),它讓腳本遠離 'unsafe-inline' 和 'unsafe-eval',並限制資源可以從哪裡載入。權重最高,因為 CSP 是抵禦注入腳本的主要防線。 |
| Strict-Transport-Security — 20 分 | 「好」意味著透過 HTTPS 傳送、max-age 至少一年(31536000 秒);includeSubDomains 會讓它更強。max-age 較短只能拿到部分分數。 |
| 框架防護 — 15 分 | 「好」意味著 CSP 的 frame-ancestors 指令,或設定為 DENY / SAMEORIGIN 的 X-Frame-Options 標頭,使其他網站無法把你的頁面嵌入框架進行點擊劫持。 |
| X-Content-Type-Options — 10 分 | 「好」意味著唯一的值 nosniff,使瀏覽器無法把回應 MIME 嗅探成另一種可執行類型。 |
| Referrer-Policy — 10 分 | 「好」意味著一個從不向其他源傳送完整 URL 的策略——strict-origin-when-cross-origin 或更嚴格的(same-origin、no-referrer)。 |
| Permissions-Policy — 10 分 | 「好」意味著該標頭存在,並關閉了網站不使用的強大瀏覽器功能,如攝影機、麥克風和地理位置。 |
| Cross-Origin-Opener-Policy — 獎勵項 | 與被評分的標頭一同報告,但不計分:它把你的頁面與跨源視窗隔離,並刻意置於 100 分之外,這樣公佈的權重就恰好只有上面六個標頭。 |
| 等級 | 95 分及以上為 A+,90+ 為 A,80+ 為 B,65+ 為 C,50+ 為 D,35+ 為 E,低於 35 為 F。每個標頭按所找到值的強度計分;缺失的標頭該項得零分。 |
常見問題
分數是怎麼算的——是黑箱嗎?
不是。六個標頭帶有固定的公佈權重——CSP 35、HSTS 20、框架防護 15、X-Content-Type-Options 10、Referrer-Policy 10、Permissions-Policy 10——總計 100。每個標頭根據檢查器找到的值的強度獲得滿分、部分分數或零分,字母等級按上方事實表中的區間劃分。Cross-Origin-Opener-Policy 作為獎勵項報告,從不影響分數。
這與網站健康檢查有什麼不同?
網站健康檢查是一次寬泛的體檢——可用性、DNS、TLS、到期時間等等——其中安全標頭只是一個快速子分數。本頁只評標頭,但評得很深:逐項找到的確切值、逐項判定與分數、用通俗語言說明的風險,以及可貼上的 Nginx 和 Apache 修復。用健康檢查發現問題,用本頁修復它。
到底評的是哪個回應——我的網站有重新導向?
被評分的是所有重新導向之後最終回應的標頭,因為那才是瀏覽器用來建構頁面的回應。結果會顯示最終 URL 和狀態碼,讓你看清鏈條落在了哪裡。一個注意事項:這是靜態抓取,不是瀏覽器——不運行 JavaScript,因此框架只在用戶端加入的標頭、或只在登入後或只在其他路徑上出現的標頭,都不計入等級。
我的網站得了 F,是不是說明它被黑了?
不是。F 意味著最終回應幾乎沒有攜帶六個被評分標頭中的任何一個——這是預設伺服器或框架安裝的常見狀態。它說明你訪客的瀏覽器沒有得到本可以得到的保護;它並不說明網站本身已被入侵。按影響順序逐項修復並重新檢查:大多數網站一個下午就能爬升好幾個等級。