Citrix ADC

Protection basée sur la grammaire SQL pour les charges utiles HTML et JSON

Protection basée sur la grammaire SQL pour les charges utiles HTML et JSON

Citrix Web App Firewall utilise une approche de correspondance de modèles pour détecter les attaques par injection SQL dansHTTPet lesJSONcharges utiles. L’approche utilise un ensemble de mots-clés prédéfinis et (ou) de caractères spéciaux pour détecter une attaque et la signaler comme une violation. Bien que cette approche soit efficace, elle peut entraîner de nombreux faux positifs, entraînant l’ajout d’une ou de plusieurs règles de relaxation. Surtout lorsque des mots couramment utilisés tels que « Sélectionner » et « De » sont utilisés dans une requête HTTP ou JSON. Nous pouvons réduire les faux positifs en implémentant la vérification de la protection de la grammaire SQLHTMLet laJSONcharge utile.

Dans l’approche de correspondance de modèles existante, une attaque par injection SQL est identifiée si un mot-clé prédéfini et/ou un caractère spécial sont présents dans une requête HTTP. Dans ce cas, il n’est pas nécessaire que l’instruction soit une instruction SQL valide. Toutefois, dans l’approche basée sur la grammaire, une attaque par injection SQL n’est détectée que si un mot-clé ou un caractère spécial est présent dans une instruction SQL ou fait partie d’une instruction SQL, réduisant ainsi les scénarios faux positifs.

scénario d’utilisation de la protection basée sur la grammaire SQL

Considérez une déclaration intitulée « Sélectionnez mes billets et rencontrons à la station Union » présente dans une demande HTTP. Bien que l’instruction ne soit pas une instruction SQL valide, l’approche de correspondance de modèle existante détecte la demande comme une attaque par injection SQL car l’instruction utilise des mots-clés tels que « Select », « and » et « Union ». Toutefois, dans le cas de l’approche grammaire SQL, l’instruction n’est pas détectée comme une attaque de violation car les mots-clés ne sont pas présents dans une instruction SQL valide ou ne font pas partie d’une instruction SQL valide.

L’approche basée sur la grammaire peut également être configurée pour détecter les attaques par injection SQL dans lesJSONcharges utiles. Pour ajouter une règle de relaxation, vous pouvez réutiliser les règles de relaxation existantes. Les règles de relaxation à grains fins sont également applicables à la grammaire SQL, aux règles avec « mot clé » « ValueType ». Dans la grammaireJSONSQL, la méthode basée sur URL existante peut être réutilisée.

Configurez la protection basée sur la grammaire SQL à l’aide de l’interface de ligne

Pour implémenter la détection basée sur la grammaire SQL, vous devez configurer le paramètre « SQLInjectionGrammar » dans le profil Web App Firewall. Par défaut, le paramètre est désactivé. Toutes les actions SQL Injection existantes sont prises en charge, sauf l’apprentissage. Tout nouveau profil créé après une mise à niveau prend en charge la grammaire d’injection SQL et le type par défaut reste « caractère spécial ou mot-clé » et il doit être explicitement activé.

À l’invite de commandes, tapez :

add appfw profile  –SQLInjectionAction  -SQLInjectionGrammar ON/OFF 

Exemple :

add appfw profile profile1 –SQLInjectionAction Block –SQLInjectionGrammar ON

Configurer la protection de correspondance de motifs SQL et la protection basée sur la grammaire à l’aide de l’interface de ligne de commande

Si vous avez activé les approches grammaticales et les approches de correspondance de modèle, l’appliance effectue d’abord une détection grammaire et s’il existe une détection par injection SQL avec le type d’action défini sur bloquer, la demande est bloquée (sans vérifier la détection à l’aide de la correspondance de modèle).

À l’invite de commandes, tapez :

add appfw profile  –SQLInjectionAction  -SQLInjectionGrammar ON –SQLInjectionType  

Exemple :

add appfw profile p1 –SQLInjectionAction block – SQLInjectionGrammar ON –SQLInjectionType SQLSplChar

Configurer la vérification SQL Injection uniquement avec une protection grammaire à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

add appfw profile  –SQLInjectionAction  -SQLInjectionGrammar ON –SQLInjectionType None 

Exemple :

add appfw profile p1 –SQLInjectionAction block – SQLInjectionGrammar ON –SQLInjectionType None

Liez les règles de relaxation pour la protection basée sur la grammaire SQL à l’aide de l’interface de ligne de commande

Si votre application exige que vous contourniez le contrôle d’SQLinjection pour un « ELEMENT » ou un « ATTRIBUT » spécifique dans la charge utile, vous devez configurer une règle de relaxation.

Remarque :

Les règles de relaxation avec « mot-clé » ValueType sont évaluées uniquement lorsque l’appliance effectue une détection à l’aide de laSQLgrammaire.

LaSQLcommande Règles de relaxation de l’inspection par injection a la syntaxe suivante. À l’invite de commandes, tapez :

bind appfw profile  -SQLInjection  [isRegex(REGEX| NOTREGE)]  [-location ] [-valueType (Keywor|SpecialString|Wildchar) [][-isValueRegex (REGEX | NOTREGEX) ]] 

Exemple :

bind appfw profile p1 -sqlinjection abc http://10.10.10.10/绑定appfw概要p1 -sqlinjection ' abc (0-9]+' http://10.10.10.10/ -isregex regEXbind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX

Configurer la protection basée sur la grammaire SQL pour la charge utile JSON à l’aide de l’interface de ligne de commande

Pour implémenter la détection basée sur la grammaire SQL pour la charge utile JSON, vous devez configurer le paramètre « JSONSQLInjectionGrammar » dans le profil Web App Firewall. Par défaut, le paramètre est désactivé. Toutes les actions SQL Injection existantes sont prises en charge, sauf l’apprentissage. Tout nouveau profil créé après une mise à niveau prend en charge la grammaire d’injection SQL et le type par défaut reste « caractère spécial ou mot-clé » et vous devez l’activer explicitement.

À l’invite de commandes, tapez :

JSON -JSONS添加appfw概要文件<配置文件名称>类型QLInjectionAction  -JSONSQLInjectionGrammar ON/OFF 

Exemple :

add appfw profile profile1 –type JSON –JSONSQLInjectionAction Block –JSONSQLInjectionGrammar ON

Configurer la protection de correspondance de motifs SQL et la protection grammaire à l’aide de l’interface de ligne de commande

Si vous avez activé les vérifications de grammaire et de correspondance de modèle, l’appliance effectue d’abord une détection grammaire et s’il existe une détection par injection SQL avec le type d’action bloqué, la demande est bloquée (sans vérifier la détection à l’aide de la correspondance de modèle).

Remarque :

Les règles de relaxation avec « mot-clé » ValueType sont évaluées uniquement lorsque l’appliance effectue une détection à l’aide de la grammaire SQL.

À l’invite de commandes, tapez :

JSON -JSONS添加appfw概要文件<配置文件名称>类型QLInjectionAction  -JSONSQLInjectionGrammar ON –JSONSQLInjectionType  

Exemple :

add appfw profile p1 –type JSON –JSONSQLInjectionAction block – JSONSQLInjectionGrammar ON –JSONSQLInjectionType SQLSplChar

Configurer la protection basée sur la grammaire SQL pour la charge utile JSON à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

JSON -JSONS添加appfw概要文件<配置文件名称>类型QLInjectionAction  -JSONSQLInjectionGrammar ON –JSONSQLInjectionType None`\ 

Exemple :

add appfw profile p1 –type JSON –JSONSQLInjectionAction block – JSONSQLInjectionGrammar ON –JSONSQLInjectionType None

Lier des règles de relaxation basées sur des URL pour une protection grammaire JSON SQL à l’aide de l’interface de ligne de commande

Si votre application exige que vous contourniez l’inspection par injection deJSONcommandes pour un « ELEMENT » ou « ATTRIBUTE » spécifique dans la charge utile, vous pouvez configurer une règle de relaxation. LaJSONcommande Règles de relaxation de l’inspection par injection a la syntaxe suivante. À l’invite de commandes, tapez :

bind appfw profile  –JSONCMDURL  -comment  -isAutoDeployed ( AUTODEPLOYED | NOTAUTODEPLOYED ) -state ( ENABLED | DISABLED ) 

Exemple :

bind appfw profile p1 -sqlinjection abc http://10.10.10.10/绑定appfw概要p1 -sqlinjection ' abc (0-9]+' http:// 10.10.10.10/ -isregex regEXbind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX

Configurer la protection basée sur la grammaire SQL à l’aide de l’interface graphique

Effectuez la procédure GUI pour configurer la détection d’injection HTML SQL basée sur la grammaire.

  1. Dans le volet de navigation, accédez àSécurité > Profils.
  2. Dans la pageProfils, cliquez surAjouter.
  3. 苏尔la pageProfil Citrix Web App Firewall, cliquez surContrôles de sécuritésousParamètres avancés.
  4. Dans la sectionVérification de sécurité, accédez aux paramètresHTML SQL Injection.
  5. Cliquez sur l’icône exécutable située près de la case à cocher.
  6. Cliquez surParamètres d’actionpour accéder à la pageParamètres d’injection SQL HMTL.

    Configuration de l'interface graphique pour la charge utile HTML de protection basée sur la grammaire SQL

  7. Activez lacase à cocher Vérifier l’utilisation de la grammaire SQL.
  8. Cliquez surOK.

Configurer la protection basée sur la grammaire SQL pour la charge utile JSON à l’aide de l’interface graphique

Effectuez la procédure GUI pour configurer la détection d’injection JSON SQL basée sur la grammaire.

  1. Dans le volet de navigation, accédez àSécurité > Profils.
  2. Dans la pageProfils, cliquez surAjouter.
  3. 苏尔la pageProfil Citrix Web App Firewall, cliquez surContrôles de sécuritésousParamètres avancés.
  4. Dans la sectionVérifications de sécurité, accédez aux paramètresJSON SQL Injection.
  5. Cliquez sur l’icône exécutable située près de la case à cocher.
  6. Cliquez surParamètres d’actionpour accéder à la pageParamètres d’injection JSON SQL.
  7. Activez lacase à cocher Vérifier l’utilisation de la grammaire SQL.
  8. Cliquez surOK.

    Configuration de l'interface graphique pour la charge utile JSON de protection basée sur la grammaire SQL

Protection basée sur la grammaire SQL pour les charges utiles HTML et JSON