跳至主要內容
>_ITDITD網站資安平台

名詞解釋

什麼是 SSRF(伺服器端請求偽造)

SSRF(Server-Side Request Forgery,伺服器端請求偽造)是一種讓伺服器向「本不該存取的目標」發起請求的漏洞。它常出現在接收 URL 並去取得內容的功能(預覽產生、Webhook、診斷工具等)中,可能從竊取雲端內部中繼資料一路演變成大規模資料外洩。本文用圖和表講解它的原理、容易出現在哪些功能裡、驗證時常被忽略的坑,以及功能開發方應有的防禦。

發布於 2026-06-07 更新於 2026-06-07 閱讀時間 2 分鐘

「輸入一個 URL,就幫你把裡面的內容取回來」——這種隨處可見的便利功能,在最壞的情況下會成為雲端金鑰被奪走的入口。這就是 SSRF。本文從零講解它的原理與防禦。

到底發生了什麼

正常的存取是「使用者 → 外部網站」。而 SSRF 則是把伺服器當成代理,讓它去存取「內部」。由於伺服器能夠觸達從外部看不見的內部網路,或雲端的憑證提供端,攻擊者就能藉此間接窺探這些地方。

攻擊者
──「去取這個內部 URL」──▶
你的伺服器(URL 取得功能)
└─ 代理存取 ─▶
內部網路・管理後台
169.254.169.254(雲端憑證)
攻擊者把伺服器當作「跳板」,到達本來從外部無法觸及的內部。

在雲端環境中,從這個內部目標(中繼資料提供端)有可能取到 臨時憑證。一旦透過 SSRF 到達那裡,金鑰就會被奪走,進而連鎖導致整個儲存空間被匯出。這在現實中已經釀成了大規模事故。→ Capital One —— SSRF 導致 1 億人資訊外洩的事件

它潛藏在哪裡

「伺服器去取得使用者輸入的 URL」這類功能全都是候選對象。

功能常見的實作方式
OG / 連結預覽產生伺服器取得被貼上的 URL 並產生縮圖
Webhook 傳送伺服器向使用者指定的目標發起 POST
圖片・檔案匯入「從 URL 取得圖片」
網站診斷工具伺服器存取所輸入的網站並進行檢查

驗證時常被忽略的坑

只做到「攔截內部 IP 就行」是不夠的。下面這些繞過路徑必須堵住。

只做簡單攔截會有漏洞

  • 重新導向跟隨:被允許的網域用 302 跳轉到內部位址。
  • DNS 重新解析(rebinding):校驗時是外部 IP,取得時切換成內部 IP。
  • IP 寫法的變體:用十進位、八進位、縮寫寫法等來偽裝內部位址。
  • 其他協定file://gopher:// 等意料之外的協定。

功能開發方應有的防禦

SSRF 要靠「功能的實作方式」來防禦。這也是本站作為安全產品對自家診斷功能所施加的規則。

1

目標採用 allowlist 方式

將協定(http/https)和主機只限定為已允許的那些。「只放行允許的」比「攔截內部的」更穩妥。

2

阻斷內部目標

拒絕對 127.0.0.1 / 10.x / 192.168.x / 169.254.169.254(中繼資料)等的存取。

3

只限已確認所有權的網域(診斷類)

只針對使用者已證明所有權的網域。不讓它去存取第三方網站。

4

堵住繞過路徑與中繼資料

對重新導向的最終落點也要校驗,並考慮 DNS 重新解析。雲端上則透過 IMDSv2 等方式,讓存取中繼資料必須帶 token。

本站把「不替使用者保管祕密」「只診斷已確認所有權的目標」「把爆炸半徑降到最小」作為設計的基石(→ 關於本站)。

接下來閱讀

FAQ

Q哪些功能容易出現 SSRF?
A

「伺服器去取得使用者輸入的 URL」這類功能。例如 OG 預覽產生、Webhook 傳送、圖片匯入、網站診斷工具等。越是便利的功能越需要小心。

Q為什麼 SSRF 在雲端環境中尤其危險?
A

因為雲端上的虛擬機器有一個僅限內部存取的「中繼資料提供端」,從那裡可能取到臨時憑證。一旦透過 SSRF 到達那裡,金鑰就會被奪走,進而連鎖導致整個儲存空間被匯出(這正是 Capital One 事故的路徑)。

Q如何防禦 SSRF?
A

用 allowlist 嚴格校驗目標,並阻斷對內部 IP(127.0.0.1、10.x、169.254.169.254 等雲端中繼資料)的存取。如果是診斷類功能,則只限定為「已確認所有權的網域」,同時堵住重新導向跟隨和 DNS 重新解析的繞過路徑。