安全響應頭檢測工具
只需輸入網站URL,即可檢測HSTS、CSP、X-Frame-Options等主要安全響應頭的配置情況,列出缺失或設定不當的專案,並提供改進建議。
診斷線上網站的安全標頭
輸入網址,伺服器便會去取那個網站的回應標頭,並判定 HSTS、CSP、X-Frame-Options、X-Content-Type-Options、Referrer-Policy 與 Permissions-Policy 的設定狀況。它把「缺失的」與「已設但偏弱的」分開列出,並逐項說明問題何在。
這裡值得記在心上的是:標頭「有」與標頭「有效」,本是兩回事。 譬如 HSTS 縱然設了,max-age 若太短,瀏覽器強制 HTTPS 的窗口便不夠長,實際的保護也就薄了。本工具之所以把合格與警告分開,緣故正在於此。另一點是:回傳來的標頭未必出自來源站。 CDN 或反向代理可能在半途加上它們,若是如此,該去修改設定的地方也隨之不同。診斷所呈現的是「由外看去的樣子」,至於是哪一層加的,它無從告知。
使用方法
-
輸入待查的網址
請給出以
https://開頭、外部可達的網址。 - 執行檢查 出於安全,私有 IP 位址之類外部無法抵達的目標會被拒絕。
- 閱讀判定 分合格、警告、不合格三檔,警告意味著「有,但偏弱」。
- 照著說明去修正 每一項都附有問題所在的說明,可據以排定先後。
用好本工具的小技巧
- 本工具在伺服器端獲取目標網站的URL,因此不受瀏覽器CORS限制,可以檢測任意網站的響應頭。
- HSTS的max-age基本上設定得越長越安全,但如果計劃調整證書運維方式,建議先用較短的值測試後再應用到生產環境。
- 搭配姊妹工具CSP驗證器使用,可對Content-Security-Policy的語法進行更詳細的檢測。
- 本工具採用與robots.txt檢測工具相同的「輸入URL後由伺服器端獲取」機制,只要是無需認證的公開頁面,任意網站都可作為檢測對象。
- 建議定期檢測自己的網站,確認CDN或反向代理的配置變更是否在不知不覺中導致某些安全響應頭丟失。
這些情境會用到
上線前做最後確認
就在發布之前,可從外部確認所期望的標頭是否真的回傳了。
借鑑他人網站的設定
看看同類網站做到了哪一步,便有了衡量自家水準的尺子。
比對改動前後
加上標頭之後再查一次,確認它已然生效。
檢視接手過來的網站
它適合交接之後的盤點,可列出所缺的項目。
安全標頭的術語
- HSTS
- 迫使存取走 HTTPS 而非 HTTP 的標頭。除非
max-age有一年以上,保護的時長便不夠。 - X-Content-Type-Options
- 設為
nosniff可讓瀏覽器不再由內容去猜 MIME 類型,從而避免檔案被當作別的東西執行。 - X-Frame-Options
- 拒絕讓您的網站被嵌入框架的標頭。在較新的政策裡,CSP 的
frame-ancestors擔起了同樣的角色。 - Content-Security-Policy
- 限制可載入資源從何而來的機制,是防禦 XSS 的中樞。
- Referrer-Policy
- 決定訪客轉往別的網站時,交出多少來源網址的標頭。
- Permissions-Policy
- 控制哪些來源可使用攝影機、麥克風與位置等功能的標頭。
常見問題
閒話 ― securityheaders.com與點選劫持防護的歷史
通過HTTP響應頭診斷安全設定的服務中,Scott Helme開發的securityheaders.com長期以來被視為事實標準。由於許多海外服務僅提供英文的診斷結果和改進說明,Toolbase作為該領域的替代方案,自行開發了這款可用中文一併確認診斷結果與改進原因的檢測工具。
HSTS(HTTP Strict Transport Security)是IETF於2012年作為RFC 6797標準化的響應頭。其誕生背景是2009年被實際演示的一種名為"SSL剝離(SSL Stripping)"的攻擊手法:當用戶省略輸入https://時,瀏覽器會先以HTTP方式連線一瞬間,攻擊者正是利用這一瞬間篡改通訊內容。HSTS讓瀏覽器記住"該域名必須始終以HTTPS方式訪問",從而在首次訪問之後防止降級攻擊。
X-Frame-Options最初是微軟於2009年為Internet Explorer 8引入的專有擴充套件響應頭,後來被其他瀏覽器採納併成為事實標準。當時受到關注的問題是"點選劫持"攻擊,即將透明的iframe疊加在看似真實的按鈕之上,使使用者在不知情的情況下完成點選。如今業界正逐步轉向更靈活的Content-Security-Policy中的frame-ancestors指令,但為了相容不支援該指令的舊版瀏覽器,同時設定兩者仍是目前推薦的做法。