El plugin request-block bloquea las solicitudes HTTP que coinciden con patrones específicos de URL, encabezados o cuerpo. Esto le ayuda a evitar el acceso externo a recursos protegidos.
Tipo de plugin
Plugin de protección de seguridad.
Campos de configuración
Debe configurar como mínimo uno de los siguientes campos: block_urls, block_headers o block_bodys.
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
|
array of string |
No |
- |
Patrones de URL para comparar con las rutas y cadenas de consulta de la solicitud. |
|
|
array of string |
No |
- |
Patrones para comparar con los nombres y valores de los encabezados de la solicitud. |
|
|
array of string |
No |
- |
Patrones para comparar con el contenido del cuerpo de la solicitud. |
|
|
number |
No |
403 |
Código de estado HTTP que se devuelve a las solicitudes bloqueadas. |
|
|
string |
No |
- |
Cuerpo de respuesta que se devuelve a las solicitudes bloqueadas. |
|
|
bool |
No |
true |
Especifica si la coincidencia distingue entre mayúsculas y minúsculas. Establezca este valor en |
Ejemplos
Bloquear solicitudes por URL
block_urls:
- swagger.html
- foo=bar
case_sensitive: false
Solicitudes bloqueadas:
curl http://example.com?foo=Bar
curl http://example.com/Swagger.html
Dado que case_sensitive está establecido en false, foo=Bar coincide con la regla foo=bar, y Swagger.html coincide con la regla swagger.html.
Bloquear solicitudes por encabezado
block_headers:
- example-key
- example-value
Solicitudes bloqueadas:
curl http://example.com -H 'example-key: 123'
curl http://example.com -H 'my-header: example-value'
La primera solicitud coincide porque el nombre de su encabezado contiene example-key. La segunda solicitud coincide porque el valor de su encabezado contiene example-value.
Bloquear solicitudes por cuerpo
block_bodys:
- "hello world"
case_sensitive: false
Solicitudes bloqueadas:
curl http://example.com -d 'Hello World'
curl http://example.com -d 'hello world'
Ambas solicitudes coinciden porque case_sensitive está establecido en false.
Aplicar reglas a rutas o dominios específicos
Puede definir reglas de bloqueo independientes para distintas rutas y dominios. Las reglas se evalúan en orden y se aplica la primera que coincide.
A continuación se muestra la configuración que se aplica a las rutas route-a y route-b:
block_bodys:
- "hello world"
A continuación se muestra la configuración que se aplica a los dominios *.example.com y test.com:
block_urls:
- "swagger.html"
block_bodys:
- "hello world"
route-ayroute-bhacen referencia a las rutas especificadas al crear las rutas de la puerta de enlace. Si una solicitud del cliente coincide con alguna de estas rutas, se aplican las reglas correspondientes.*.example.comytest.comcoinciden con los nombres de dominio de las solicitudes. Si una solicitud del cliente coincide con alguno de estos dominios, se aplican las reglas correspondientes.Las reglas se aplican en orden. Una vez que coincide la primera regla, se omiten las siguientes.
Límite de tamaño del cuerpo de la solicitud
Cuando se configura block_bodys, la comparación del cuerpo solo se aplica a solicitudes menores de 32 MB. Las solicitudes mayores de 32 MB que no coinciden con ninguna regla de block_urls o block_headers se permiten sin bloquearse.
Si se configura block_bodys y el cuerpo de la solicitud supera el valor de DownstreamConnectionBufferLimits configurado para la puerta de enlace, esta devuelve un error 413 Payload Too Large. Para aumentar este límite, ajuste DownstreamConnectionBufferLimits en la página de configuración de parámetros.
Aumentar DownstreamConnectionBufferLimits incrementa significativamente el uso de memoria de la puerta de enlace. Ajuste este valor con precaución.