Protection basée sur la grammaire SQL pour les charges utiles HTML et JSON
NetScaler Web App Firewall utilise une approche de correspondance de modèles pour détecter les attaques par injection SQL dans les charges utiles HTTP
et JSON
les charges 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 SQL HTML
et la JSON
charge 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 les JSON
charges 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 grammaire JSON
SQL, 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 commande, tapez :
add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON/OFF
<!--NeedCopy-->
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 commande, tapez :
add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON –SQLInjectionType <Any action other than ‘None’: SQLSplCharANDKeyword/ SQLSplCharORKeyword/ SQLSplChar/ SQLKeyword>
<!--NeedCopy-->
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 commande, tapez :
add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON –SQLInjectionType None
<!--NeedCopy-->
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’ SQL
injection 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 la
SQL
grammaire.
Les règles de relaxation de l’inspection par injection de SQL
commandes ont la syntaxe suivante. À l’invite de commande, tapez :
bind appfw profile <name> -SQLInjection <String> [isRegex(REGEX| NOTREGE)] <formActionURL> [-location <location>] [-valueType (Keywor|SpecialString|Wildchar) [<valueExpression>][-isValueRegex (REGEX | NOTREGEX) ]]
<!--NeedCopy-->
Exemple :
bind appfw profile p1 -sqlinjection abc http://10.10.10.10/
bind appfw profile p1 –sqlinjection 'abc[0-9]+' http://10.10.10.10/ -isregex regEX
bind 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 commande, tapez :
add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON/OFF
<!--NeedCopy-->
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 commande, tapez :
add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON –JSONSQLInjectionType <Any action other than ‘None’: SQLSplCharANDKeyword/ SQLSplCharORKeyword/ SQLSplChar/ SQLKeyword>
<!--NeedCopy-->
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 commande, tapez :
add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON –JSONSQLInjectionType None`\
<!--NeedCopy-->
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 de JSON
commandes pour un « ELEMENT » ou « ATTRIBUTE » spécifique dans la charge utile, vous pouvez configurer une règle de relaxation.
La JSON
commande Règles de relaxation de l’inspection par injection a la syntaxe suivante. À l’invite de commande, tapez :
bind appfw profile <profile name> –JSONCMDURL <expression> -comment <string> -isAutoDeployed ( AUTODEPLOYED | NOTAUTODEPLOYED ) -state ( ENABLED | DISABLED )
<!--NeedCopy-->
Exemple :
bind appfw profile p1 -sqlinjection abc http://10.10.10.10/
bind appfw profile p1 –sqlinjection 'abc[0-9]+' http:// 10.10.10.10/ -isregex regEX
bind 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.
- Dans le volet de navigation, accédez à Sécurité > Profils.
- Sur la page Profils, cliquez sur Ajouter.
- Sur la page de profil du pare-feu NetScaler Web App, cliquez sur Contrôles de sécurité sous Paramètres avancés.
- Dans la section Vérification de sécurité, accédez aux paramètres HTML SQL Injection .
- Cliquez sur l’icône exécutable située près de la case à cocher.
-
Cliquez sur Paramètres d’action pour accéder à la page Paramètres d’injection SQL HMTL .
- Activez la case à cocher Vérifier l’utilisation de la grammaire SQL .
- Cliquez sur OK.
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.
- Dans le volet de navigation, accédez à Sécurité > Profils.
- Sur la page Profils, cliquez sur Ajouter.
- Sur la page de profil du pare-feu NetScaler Web App, cliquez sur Contrôles de sécurité sous Paramètres avancés.
- Dans la section Vérifications de sécurité, accédez aux paramètres d’injection SQL JSON .
- Cliquez sur l’icône exécutable située près de la case à cocher.
- Cliquez sur Paramètres d’action pour accéder à la page Paramètres d’injection JSON SQL.
- Activez la case à cocher Vérifier l’utilisation de la grammaire SQL .
-
Cliquez sur OK.
Dans cet article
- scénario d’utilisation de la protection basée sur la grammaire SQL
- Configurez la protection basée sur la grammaire SQL à l’aide de l’interface de ligne
- 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
- Configurer la vérification SQL Injection uniquement avec une protection grammaire à l’aide de l’interface de ligne de commande
- Liez les règles de relaxation pour la protection basée sur la grammaire SQL à l’aide de l’interface de ligne de commande
- Configurer la protection basée sur la grammaire SQL pour la charge utile JSON à l’aide de l’interface de ligne de commande
- Configurer la protection de correspondance de motifs SQL et la protection grammaire à l’aide de l’interface de ligne de commande
- Configurer la protection basée sur la grammaire SQL pour la charge utile JSON à l’aide de l’interface de ligne de commande
- 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
- Configurer la protection basée sur la grammaire SQL à l’aide de l’interface graphique
- Configurer la protection basée sur la grammaire SQL pour la charge utile JSON à l’aide de l’interface graphique