Le plug-in request-block bloque les requêtes HTTP correspondant à des modèles d'URL, d'en-tête ou de corps spécifiques, ce qui vous aide à empêcher l'accès externe aux ressources protégées.
Type de plug-in
Plug-in de sécurité.
Champs de configuration
Vous devez configurer au moins l'un des champs suivants : block_urls, block_headers ou block_bodys.
| Champ | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
block_urls |
tableau de chaînes | Non | - | Modèles d'URL à comparer aux chemins et aux chaînes de requête. |
block_headers |
tableau de chaînes | Non | - | Modèles à comparer aux noms et aux valeurs des en-têtes de requête. |
block_bodys |
tableau de chaînes | Non | - | Modèles à comparer au contenu du corps de la requête. |
blocked_code |
nombre | Non | 403 | Code d'état HTTP renvoyé pour les requêtes bloquées. |
blocked_message |
chaîne | Non | - | Corps de la réponse renvoyé pour les requêtes bloquées. |
case_sensitive |
booléen | Non | true | Indique si la correspondance est sensible à la casse. Définissez cette valeur sur false pour une correspondance insensible à la casse. |
Exemples
Bloquer les requêtes par URL
block_urls:
- swagger.html
- foo=bar
case_sensitive: false
Requêtes bloquées :
curl http://example.com?foo=Bar
curl http://example.com/Swagger.html
Comme case_sensitive est défini sur false, foo=Bar correspond à la règle foo=bar et Swagger.html correspond à la règle swagger.html.
Bloquer les requêtes par en-tête
block_headers:
- example-key
- example-value
Requêtes bloquées :
curl http://example.com -H 'example-key: 123'
curl http://example.com -H 'my-header: example-value'
La première requête correspond car le nom de son en-tête contient example-key. La seconde correspond car la valeur de son en-tête contient example-value.
Bloquer les requêtes par corps
block_bodys:
- "hello world"
case_sensitive: false
Requêtes bloquées :
curl http://example.com -d 'Hello World'
curl http://example.com -d 'hello world'
Les deux requêtes correspondent car case_sensitive est défini sur false.
Appliquer des règles à des routes ou des domaines spécifiques
Définissez des règles de blocage distinctes pour différentes routes et domaines. Les règles sont évaluées dans l'ordre ; la première règle correspondante s'applique.
La configuration suivante s'applique aux routes route-a et route-b :
block_bodys:
- "hello world"
La configuration suivante s'applique aux domaines *.example.com et test.com :
block_urls:
- "swagger.html"
block_bodys:
- "hello world"
route-aetroute-bdésignent les routes spécifiées lors de la création des routes de passerelle. Si une requête client correspond à l'une de ces routes, les règles associées s'appliquent.*.example.comettest.comcorrespondent aux noms de domaine présents dans les requêtes. Si une requête client correspond à l'un de ces domaines, les règles associées s'appliquent.Les règles s'appliquent dans l'ordre. Une fois la première règle correspondante appliquée, les règles suivantes sont ignorées.
Limite de taille du corps de la requête
Lorsque block_bodys est configuré, la correspondance du corps ne s'applique qu'aux requêtes de moins de 32 Mo. Les requêtes de plus de 32 Mo qui ne correspondent à aucune règle block_urls ou block_headers sont autorisées.
Si block_bodys est configuré et que le corps de la requête dépasse la valeur DownstreamConnectionBufferLimits configurée pour la passerelle, celle-ci renvoie une erreur 413 Payload Too Large. Pour augmenter cette limite, ajustez le paramètre DownstreamConnectionBufferLimits sur la page de configuration des paramètres.
L'augmentation de la valeur DownstreamConnectionBufferLimits accroît considérablement l'utilisation de la mémoire de la passerelle. Ajustez cette valeur avec précaution.