O plugin request-block bloqueia requisições HTTP correspondentes a padrões específicos de URL, cabeçalho ou corpo para impedir o acesso externo a recursos protegidos.
Tipo de plugin
Plugin de proteção de segurança.
Campos de configuração
Configure pelo menos um dos seguintes campos: block_urls, block_headers ou block_bodys.
|
Campo |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
array of string |
Não |
- |
Padrões de URL para corresponder aos caminhos da requisição e strings de consulta. |
|
|
array of string |
Não |
- |
Padrões para corresponder aos nomes e valores dos cabeçalhos da requisição. |
|
|
array of string |
Não |
- |
Padrões para corresponder ao conteúdo do corpo da requisição. |
|
|
number |
Não |
403 |
Código de status HTTP retornado nas requisições bloqueadas. |
|
|
string |
Não |
- |
Corpo da resposta retornado nas requisições bloqueadas. |
|
|
bool |
Não |
true |
Define se a correspondência diferencia maiúsculas de minúsculas. Defina como |
Exemplos
Bloquear requisições por URL
block_urls:
- swagger.html
- foo=bar
case_sensitive: false
Requisições bloqueadas:
curl http://example.com?foo=Bar
curl http://example.com/Swagger.html
Como case_sensitive está definido como false, foo=Bar corresponde à regra foo=bar e Swagger.html corresponde à regra swagger.html.
Bloquear requisições por cabeçalho
block_headers:
- example-key
- example-value
Requisições bloqueadas:
curl http://example.com -H 'example-key: 123'
curl http://example.com -H 'my-header: example-value'
A primeira requisição corresponde porque o nome do cabeçalho contém example-key. A segunda corresponde porque o valor do cabeçalho contém example-value.
Bloquear requisições por corpo
block_bodys:
- "hello world"
case_sensitive: false
Requisições bloqueadas:
curl http://example.com -d 'Hello World'
curl http://example.com -d 'hello world'
Ambas as requisições correspondem porque case_sensitive está definido como false.
Aplicar regras a rotas ou domínios específicos
Defina regras de bloqueio distintas para diferentes rotas e domínios. O sistema avalia as regras em ordem e aplica a primeira correspondência encontrada.
A configuração abaixo aplica-se às rotas route-a e route-b:
block_bodys:
- "hello world"
A configuração abaixo aplica-se aos domínios *.example.com e test.com:
block_urls:
- "swagger.html"
block_bodys:
- "hello world"
route-aeroute-breferem-se às rotas especificadas durante a criação das rotas do gateway. As regras associadas entram em vigor se uma requisição de cliente corresponder a uma dessas rotas.*.example.cometest.comcorrespondem aos nomes de domínio nas requisições. As regras associadas entram em vigor se uma requisição de cliente corresponder a um desses domínios.As regras são aplicadas sequencialmente. Após a primeira correspondência, o sistema ignora as regras subsequentes.
Limite de tamanho do corpo da requisição
Com block_bodys configurado, a correspondência de corpo restringe-se a requisições menores que 32 MB. Requisições maiores que 32 MB sem correspondência nas regras de block_urls ou block_headers são permitidas sem bloqueio.
Se block_bodys estiver configurado e o corpo da requisição exceder o valor de DownstreamConnectionBufferLimits do gateway, o sistema retornará o erro 413 Payload Too Large. Para aumentar esse limite, ajuste DownstreamConnectionBufferLimits na página de configuração de parâmetros.
Aumentar DownstreamConnectionBufferLimits eleva significativamente o uso de memória do gateway. Ajuste esse valor com cautela.