觀點 · 資訊分享
Cloudflare WAF 新增「正向安全」:先學會你的網站長怎樣,不合格的請求先標出來再決定擋不擋
Cloudflare WAF 推出 Application Profiles:不只比對已知攻擊,還會從流量學習合法請求的樣子,把形狀不對的請求標出來,先看數據再決定要不要封鎖。目前限 API Security 客戶與受邀的 Enterprise 客戶。
- 發布
- 2026-09-07
- 篇幅
- 約 5 分鐘 · 2,283 字
- 結構
- 7 節 + 4 題常見問題
- 標籤

一句話看懂:Cloudflare WAF 新增 Application Profiles,先學會你的網站「正常請求長什麼樣子」,形狀不對的就標出來,等你確認沒誤殺再決定要不要擋。

先用白話講:正向安全是什麼?
想像一間夜店有兩種門口管理方式。第一種是黑名單:保全記得壞人長相,看到像壞人的就攔下來,但新來的壞人他不認得。第二種是邀請名單:只放持邀請函的人進門,沒邀請函的一律請到旁邊問清楚。
WAF(網站應用程式防火牆)以往大多是第一種:比對請求像不像已知的攻擊,這叫負向安全。這次 Cloudflare 新增的 Application Profiles 則是第二種:先學習「合法請求應該長怎樣」,再把不合格的標出來,這叫正向安全。
發生什麼事
Cloudflare 在 9 月 7 日宣布 WAF 新增 Application Profiles。重點有幾個:
- 目前只有 Schema Profile:學習路徑變數、查詢參數、標頭、Cookie、JSON 內容與表單內容,並建立欄位型別與限制(例如數字範圍、字串長度、字元類型)
- 永遠開著、只分類:設定檔可用之後,偵測會把請求分成「符合」與「不符合」,但不會封鎖
- 先看再擋:在 Security Analytics 的 Profile Analysis 檢視符合度趨勢與抽樣的違規細節,準備好了再用自訂規則,依主機名稱、路徑或攻擊分數等條件限定範圍去封鎖
同一天,Cloudflare 也宣布 Attack Signature Detection 進入搶先體驗:用 Cloudflare 的攻擊特徵比對請求,只記錄不動作,讓你先調查再決定怎麼處理。
誰能用?
| 對象 | 狀況 |
|---|---|
| 有 API Security 的客戶 | 已可透過 Schema Learning 與 Schema Validation 使用 |
| 沒有 API Security 的 Enterprise 客戶 | 封閉測試,限受邀,需聯絡 Cloudflare 業務窗口 |
| 其他方案 | 官方沒有說明,且強調封閉測試不代表未來的方案或價格 |
給開發者的技術細節
以下依 Cloudflare 目前的文件整理(文件在公告之後仍持續更新,細節以官方頁面為準):
- 端點(operation):由 HTTP 方法、主機名稱樣式、路徑樣式組成;探索到端點只是加入清單,要在端點選單選 Learn profile 才會開始學習
- 學習條件:每週執行一次,只採用前 7 天內回應 2xx 的請求;學習欄位需要 1,000 筆合格請求,學習數值範圍與字串長度需要 10,000 筆
- 首次出現時間:排程學習下,門檻達標後最久可能要等 7 天才會出現第一份設定檔,也可要求整個網站區域立即跑一次
- 可驗證的型別:整數、字串、UUID、陣列;列舉值最多支援 3 個
- 改用上傳規格:可以把學到的 schema 匯出成 OpenAPI 後再上傳驗證;上傳規格的違規欄位是
cf.schema_validation.uploaded.violated - 限制:不支援 multipart 表單、GraphQL、XML;不強制必填參數存在;新增參數本身不算違規;限制只套用在學到的欄位,並不是完整的允許清單
- 提醒:成功的流量裡也可能混有機器人或惡意請求,所以啟用前要先檢查學到的內容
我的看法
幫中小企業做網站時,客戶多半是免費或 Pro 方案,這個功能目前只限 API Security 與受邀 Enterprise,短期內不太會直接用到。但它的思路很值得借鏡:不要只靠「擋已知壞東西」,也要定義「什麼是正常」。
對自己寫 API 的人來說,最實際的做法其實在應用程式裡:欄位型別、長度、範圍都在後端做白名單驗證,不要相信前端傳來的內容。另外,官方設計成「偵測、分析、封鎖」三個分開的步驟,我覺得也是好習慣:新規則先用記錄模式跑一陣子,確認沒誤殺正常使用者,再正式上線封鎖。
名詞小辭典
- WAF(Web Application Firewall):網站應用程式防火牆,檢查進到網站的請求,擋掉可疑的。
- 正向安全/負向安全:正向是「只允許符合預期的」;負向是「擋下符合已知攻擊的」。
- Schema(結構描述):描述資料長怎樣的規格,例如某個欄位必須是 1 到 100 的整數。
- OpenAPI:用來描述 API 有哪些路徑、參數與格式的通用規格檔。