安全響應頭檢測工具

只需輸入網站URL,即可檢測HSTS、CSP、X-Frame-Options等主要安全響應頭的配置情況,列出缺失或設定不當的專案,並提供改進建議。

診斷線上網站的安全標頭

輸入網址,伺服器便會去取那個網站的回應標頭,並判定 HSTS、CSP、X-Frame-Options、X-Content-Type-Options、Referrer-Policy 與 Permissions-Policy 的設定狀況。它把「缺失的」與「已設但偏弱的」分開列出,並逐項說明問題何在。

這裡值得記在心上的是:標頭「有」與標頭「有效」,本是兩回事。 譬如 HSTS 縱然設了,max-age 若太短,瀏覽器強制 HTTPS 的窗口便不夠長,實際的保護也就薄了。本工具之所以把合格與警告分開,緣故正在於此。另一點是:回傳來的標頭未必出自來源站。 CDN 或反向代理可能在半途加上它們,若是如此,該去修改設定的地方也隨之不同。診斷所呈現的是「由外看去的樣子」,至於是哪一層加的,它無從告知。

使用方法

  1. 輸入待查的網址 請給出以 https:// 開頭、外部可達的網址。
  2. 執行檢查 出於安全,私有 IP 位址之類外部無法抵達的目標會被拒絕。
  3. 閱讀判定 分合格、警告、不合格三檔,警告意味著「有,但偏弱」。
  4. 照著說明去修正 每一項都附有問題所在的說明,可據以排定先後。

用好本工具的小技巧

  • 本工具在伺服器端獲取目標網站的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
控制哪些來源可使用攝影機、麥克風與位置等功能的標頭。

常見問題

功能上提供相近的診斷,但Toolbase的檢測工具可以用中文確認診斷結果與改進原因。詳細的CSP語法檢測則由姊妹工具CSP驗證器負責。

可以使用,但由於HSTS僅對HTTPS連線有意義,僅使用HTTP的網站的HSTS專案將始終被診斷為不合格。請優先將整個網站遷移至HTTPS。

目前推薦使用Content-Security-Policy的frame-ancestors指令,但由於部分舊版瀏覽器不支援該指令,實務上通常建議同時設定兩者以形成雙重防護。

不會。對您輸入的URL發起的請求僅在當次檢測中進行,獲取到的響應頭資訊不會被儲存在伺服器端。

不一定。尤其是Permissions-Policy屬於非必需的附加防護層,根據網站性質的不同,其優先順序也可能較低。建議優先改進HSTS、CSP、X-Frame-Options等影響較大的專案。
工具君

閒話 ― 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指令,但為了相容不支援該指令的舊版瀏覽器,同時設定兩者仍是目前推薦的做法。