網站安全標頭:免費工具五分鐘自己檢查
約 6 分鐘
拿到弱點掃描報告,中低風險那一段常常會出現幾條長得很像的項目:缺少這個標頭、缺少那個標頭。報告會給你標頭的英文名稱,但不會說它在防什麼、不補會怎樣、補了會不會把網站弄壞。這篇把常見的六個講清楚,並附上一個免費工具,讓你在別人掃到之前先自己測一次。
1. 安全標頭是什麼,為什麼掃描器一定會查
每次瀏覽器跟你的網站要一個頁面,伺服器除了回傳網頁內容,還會附上一組看不見的說明,告訴瀏覽器該怎麼對待這個頁面。安全標頭就是其中幾條指示:只准走加密連線、不要讓別的網站把我嵌進去、不要自作聰明猜檔案類型。
掃描器一定會查它們,因為這是少數「有沒有做」可以客觀判斷的項目。它不需要真的攻擊你的網站,只要看一眼回應就知道。也因為這樣,缺標頭幾乎必定出現在報告上,而且通常被列為中低風險。
好消息是這些標頭由伺服器或主機平台送出,跟網站程式是分開的。多數情況你不必動網站本身,只要在主機或平台的設定裡加幾行。壞消息是六個裡面有兩個設錯會直接把網站弄壞,這兩個要另外花時間,第四節會講。
2. 先測一次,五分鐘就知道現況
有免費的線上工具可以直接測,貼上網址就會給你一個等第與逐項結果。建議在補任何東西之前先測一次,你才知道自己缺什麼、之後也有得比。
到 securityheaders.com,把網址貼進去按掃描,幾秒就有結果。它會給一個 A 到 F 的等第,並列出每一個標頭的實際內容。頁面下半部還會附上伺服器回應的完整標頭清單,那份清單就是弱點掃描器看到的東西,跟你收到的報告是同一份資料。
測的時候記得它只測一個網址。首頁、後台登入頁、表單送出的位址,設定不一定相同,尤其是網站分成好幾個系統拼起來的時候。把重要的路徑各測一次,才不會補完首頁而後台還光著。

3. 六個標頭各自在擋什麼
報告只會給你標頭的英文名稱,不會說它在防什麼。下面這張表用白話寫每一個擋掉的是什麼手法,看報告時對照著讀,就知道那條發現實際的意思。
| 標頭 | 它在擋什麼 |
|---|---|
| Strict-Transport-Security(HSTS) | 告訴瀏覽器這個網站只走加密連線,記住之後連第一次的未加密連線都省掉。報告寫 HSTS missing 就是缺這一條 |
| Content-Security-Policy(CSP) | 規定這個頁面只准從哪些來源載入程式與資源,指令的完整清單在 MDN。六個裡最有效的一個,也是最容易設壞的一個 |
| X-Frame-Options | 不准別的網站用框架把你的頁面嵌進去。擋的是把你的登入畫面藏在別人頁面底下、誘導使用者點下去的手法 |
| X-Content-Type-Options | 叫瀏覽器不要自己猜檔案類型。沒有它,一個偽裝成圖片上傳的檔案可能被當成程式執行 |
| Referrer-Policy | 控制使用者從你的頁面點出去時,對方看得到多少來源資訊。牽涉隱私,也避免把後台網址洩漏給外部網站 |
| Permissions-Policy | 關掉這個頁面用不到的裝置功能,例如相機、麥克風、定位。用不到就關掉,被利用的機會少一個 |
六條列在同一段報告裡,份量卻差很多。X-Content-Type-Options 與 X-Frame-Options 幾乎是一行設定的事,改完不會有人察覺。CSP 則可能要花上一整天,因為它要你把網站實際用到的每一個外部來源都列清楚。報告把它們排在一起,不代表成本一樣。
4. 怎麼加,以及哪兩個要小心
設定的位置取決於你的網站住在哪裡。多數情況不必改網站程式,只要在主機或平台的設定裡加幾行。
用 WordPress 的話最省事:多數資安外掛都有一頁可以直接勾選這些標頭,勾完存檔就生效。如果你不想為了幾行設定多養一支外掛,也可以請主機商在伺服器層級加上,效果完全一樣。自架主機的話,就是在網頁伺服器的設定檔裡加入回應標頭,改完重新載入設定。用靜態託管平台的,多半有一個專門的設定檔可以指定回應標頭,寫進去重新部署就好。
有一種情況特別容易白做工:網站前面還隔著 CDN 或代理。你在主機上改了半天,標頭卻在外面那一層被覆蓋掉,測起來還是缺。這種架構要在 CDN 或代理的規則裡設定,改完再從外面測一次確認。
HSTS 一旦送出,瀏覽器就會記住你指定的期限,期間內完全不接受未加密連線。如果憑證之後出問題,訪客會直接連不進來,而且沒辦法像平常那樣按「繼續前往」略過警告。所以先設一個短的期限,觀察一陣子,確認憑證自動續期一直正常,再把期限拉長。
CSP 的風險則是設太嚴會讓功能直接失效。症狀是畫面跑版、按鈕按了沒反應、嵌在頁面裡的第三方表單或分析工具不動,而且通常不會有明顯的錯誤訊息。正確做法是先用只回報不阻擋的模式跑一段時間,收集哪些資源會被擋掉,確認清單沒漏之後再正式啟用。直接上線一條嚴格規則,很容易在自己沒發現的情況下弄壞某個頁面,等客戶反映才知道。
5. 報告上寫「缺少標頭」,該多急?
缺標頭在報告上通常是中低風險,不必當成火燒眉毛。但它是整份報告裡改動成本最低的一類,花半天可以讓中低風險那一段少掉一整片,所以值得排在前面做。順序按副作用由小到大來排就對了。
補的順序
- 先補 X-Content-Type-Options 與 X-Frame-Options。這兩個幾乎沒有副作用,加了就好。唯一要確認的是有沒有頁面本來就需要被別的系統嵌入,例如放在合作夥伴網站裡的報名表單。
- 接著補 Referrer-Policy 與 Permissions-Policy。一樣低風險,設定值也單純,跟上一組一起做完剛好。
- HSTS 排在後面。先確認憑證自動續期至少正常跑過一輪再上,並從短期限開始,觀察沒事再拉長。
- CSP 留到最後。用只回報的模式觀察過再啟用。這一項值得排時間好好做,因為它擋掉的攻擊面比其他五個加起來還大。
補完之後重新掃一次,把結果存成截圖或 PDF。下次稽核、或是客戶問起你的網站做了哪些安全處理,你手上就有一份具體的東西可以交出去,不必憑印象回答。

安全標頭是投入最少、結果最明確的一類改動:多數只要在設定檔加幾行,掃描報告上的中低風險項目就會少掉一整段。真正需要花時間的只有 HSTS 與 CSP 這兩個,而它們也是實際擋掉最多攻擊的兩個。先去測一次,看看自己現在是幾分。
常見問題
- 掃描報告寫 HSTS missing from https server,這是嚴重的問題嗎?
- 通常被列為中低風險。它的意思是你的網站沒有告訴瀏覽器「只准走加密連線」,所以使用者第一次連線時仍有可能走到未加密的版本而被攔截。補起來很簡單,但要注意期限設定:一旦送出,瀏覽器會在期限內完全拒絕未加密連線,憑證出問題時訪客會進不來。建議先設短期限,確認憑證自動續期正常再拉長。
- 加了這些標頭,網站就安全了嗎?
- 不會。安全標頭擋的是幾類特定的攻擊手法,對過期外掛的漏洞、弱密碼被暴力破解、後台設定錯誤完全沒有幫助。它的價值在於成本極低、效果明確,適合當作基本功先做完,但不能取代更新維護與定期檢測。
- 設定之後網站有些功能不動了,怎麼辦?
- 十之八九是 CSP 設太嚴。先把它切換成只回報不阻擋的模式,重新操作一次出問題的功能,瀏覽器的主控台會告訴你哪個資源被擋。把該來源加進允許清單,確認功能恢復之後再改回正式模式。X-Frame-Options 設得太嚴也可能讓需要被嵌入的頁面失效,例如放在別的系統裡的表單。