request-block外掛程式實現了基於URL、要求標頭等特徵屏蔽HTTP請求,可以用於防護部分網站資源不對外部暴露。本文介紹如何配置request-block外掛程式。
外掛程式類型
安全防護。
配置欄位
名稱 | 資料類型 | 填寫要求 | 預設值 | 描述 |
block_urls | array of string | 選填。block_urls,block_headers,block_bodys中至少必填一項。 | - | 配置用於匹配需要屏蔽URL的字串。 |
block_headers | array of string | 選填。block_urls,block_headers,block_bodys中至少必填一項。 | - | 配置用於匹配需要屏蔽請求Header的字串。 |
block_bodys | array of string | 選填。block_urls,block_headers,block_bodys中至少必填一項。 | - | 配置用於匹配需要屏蔽請求Body的字串。 |
blocked_code | number | 選填。 | 403 | 配置請求被屏蔽時返回的HTTP狀態代碼。 |
blocked_message | string | 選填。 | - | 配置請求被屏蔽時返回的HTTP應答Body。 |
case_sensitive | bool | 選填。 | true | 配置匹配時是否區分大小寫。預設區分。 |
配置樣本
屏蔽請求URL路徑
block_urls:
- swagger.html
- foo=bar
case_sensitive: false根據該配置,下列請求將被禁止訪問。
curl http://example.com?foo=Bar
curl http://exmaple.com/Swagger.html屏蔽請求Header
block_headers:
- example-key
- example-value根據該配置,下列請求將被禁止訪問。
curl http://example.com -H 'example-key: 123'
curl http://exmaple.com -H 'my-header: example-value'屏蔽請求Body
block_bodys:
- "hello world"
case_sensitive: false根據該配置,下列請求將被禁止訪問。
curl http://example.com -d 'Hello World'
curl http://exmaple.com -d 'hello world'對特定路由或網域名稱開啟
在route-a和route-b兩個路由做如下外掛程式配置:
block_bodys:
- "hello world"在*.example.com和test.com兩個網域名稱做如下外掛程式配置:
block_urls:
- "swagger.html"
block_bodys:
- "hello world"route-a和route-b即在建立網關路由時填寫的路由名稱,當匹配到這兩個路由時,將使用此段配置。*.example.com和test.com用於匹配請求的網域名稱,當發現網域名稱匹配時,將使用此配置。配置的匹配生效順序,將按照規則的排列順序,匹配第一個規則後生效對應配置,後續規則將被忽略。
請求Body大小限制
當配置了block_bodys時,僅支援小於32MB的請求Body進行匹配。若請求Body大於此限制,並且不存在匹配到的block_urls和block_headers項時,不會對該請求執行屏蔽操作。
當配置了block_bodys時,若請求Body超過全域配置DownstreamConnectionBufferLimits,將返回413 Payload Too Large, 請在參數配置頁調高此項。注意調高此參數配置後,網關記憶體使用量將有顯著增加。