開啟應用的 WAF
Web 應用防火牆(Web Application Firewall)可以用於防禦 SQL 注入、XSS 跨站指令碼、Web 伺服器漏洞、木馬等常見攻擊,保障網站的安全。
本文介紹如何在 OpenResty Edge 管理後臺的應用中,透過頁面規則開啟 WAF。
第一步:進入頁面規則
在應用內左側導航欄中點選頁面規則,進入規則列表頁面。初始狀態下列表為空,顯示"暫時沒有建立任何規則。"

點選右上角的新建規則按鈕,開啟規則配置面板。
第二步:配置 WAF 模組
在新建規則面板中,可以看到以下幾個區域:啟用條件、動作、WAF、代理、快取 等。
WAF 模組預設處於關閉狀態,點選右側的開關將其開啟:

WAF 規則集
WAF 模組內建了以下規則集:
| 規則集 | 說明 |
|---|---|
scanner_detection | 掃描器檢測,識別並攔截常見的漏洞掃描工具和爬蟲 |
protocol_enforcement | 協議規範,強制執行 HTTP 協議標準,攔截不合規的請求 |
protocol_attack | 協議攻擊,防禦 HTTP 請求走私、響應拆分等協議層攻擊 |
application_attack_lfi | 本地檔案包含(LFI),防止攻擊者讀取伺服器本地敏感檔案 |
application_attack_rfi | 遠端檔案包含(RFI),防止攻擊者引入並執行遠端惡意檔案 |
application_attack_rce | 遠端程式碼執行(RCE),攔截試圖在伺服器端執行任意命令的請求 |
application_attack_php | PHP 程式碼注入,防禦針對 PHP 應用的程式碼注入攻擊 |
application_attack_nodejs | Node.js 注入,防禦針對 Node.js 應用的注入攻擊 |
application_attack_xss | XSS 跨站指令碼攻擊,攔截惡意指令碼注入請求 |
application_attack_sqli | SQL 注入攻擊,防止攻擊者透過構造 SQL 語句操控資料庫 |
application_attack_session_fixation | 會話固定攻擊,防止攻擊者劫持使用者會話 |
application_attack_java | Java 程式碼注入,防禦針對 Java 應用的反序列化及程式碼注入攻擊(如 Log4Shell) |
你也可以根據需要選擇需要的規則集。此外,你還可以新增自定義規則集,以及配置 WAF 白名單,相關內容將單獨說明。
偏執級別
偏執級別預設為 1。級別越高,檢測規則越嚴格,但可能產生更多誤報,需根據實際情況調整。
攔截動作
觸發 WAF 規則後,可配置以下幾種動作:

- 僅記錄日誌(預設):僅將命中記錄到日誌,不對請求做任何攔截或跳轉。
- OpenResty Edge 閘道器服務驗證碼挑戰 - 使用內建驗證碼:將終端重定向到驗證碼頁面,填寫正確驗證碼後,該終端在一定時間內的請求將被放行。
- OpenResty Edge 閘道器服務驗證碼挑戰 - 使用 hCaptcha 驗證碼:與上一項類似,但使用 hCaptcha 進行驗證。
- 攔截並返回 HTTP 403 狀態碼:直接拒絕請求,返回 403 狀態碼。
- 重定向:將請求重定向到指定的 URL。
- 返回頁面模板:返回自定義的頁面模板。
- 關閉連線:直接關閉 TCP 連線。
- 重定向驗證:重定向到驗證頁面進行身份確認。
- JavaScript 挑戰驗證:透過 JavaScript 挑戰驗證請求來源是否為真實瀏覽器。
其他選項
- 跨請求模式:開啟後,來自同一客戶端的請求分數將在 60 秒內累計計算。注意,開啟此模式後,無法為每個規則集單獨設定閾值。
- 捕獲響應體:開啟後將捕獲響應內容用於進一步分析。
第三步:配置啟用條件(可選)
如需針對特定請求開啟 WAF,可展開頂部的啟用條件區域進行配置。例如,可以根據請求 URL 字首、請求頭、客戶端 IP 等條件,有選擇地對某些路徑啟用對應的 WAF 規則集。
若不設定條件,則該規則對所有請求生效。
管理多條 WAF 規則
你可以新增多條頁面規則,為不同的請求路徑配置不同的 WAF 規則集。
需要注意的是:若多條規則的條件存在重疊,排序靠後(後生效)的規則會覆蓋前面的規則。可透過調整順序按鈕對規則進行排序,並使用檢查規則功能驗證規則配置的正確性。