Citrix ADC

SQL-Grammatikschutz für HTML- und JSON-Nutzlast

Citrix Web App Firewall verwendet einen Pattern-Match-Ansatz zum Erkennen von SQL-Injection-Angriffen inHTTPundJSONPayloads. Der Ansatz verwendet eine Reihe von vordefinierten Schlüsselwörtern und (oder) Sonderzeichen, um einen Angriff zu erkennen und ihn als Verstoß zu kennzeichnen. Obwohl dieser Ansatz effektiv ist, kann dies zu vielen Fehlalarmen führen, was dazu führt, dass eine oder mehrere Entspannungsregeln hinzugefügt werden. Insbesondere wenn häufig verwendete Wörter wie “Select” und “From” in einer HTTP- oder JSON-Anfrage verwendet werden. Wir können Fehlalarme reduzieren, indem wir die Überprüfung des SQL-GrammatikschutzesHTMLund dieJSONNutzlast implementieren.

Im bestehenden Pattern-Match-Ansatz wird ein SQL-Injection-Angriff identifiziert, wenn ein vordefiniertes Schlüsselwort und/oder ein Sonderzeichen in einer HTTP-Anforderung vorhanden ist. In diesem Fall muss die Anweisung keine gültige SQL-Anweisung sein. Im grammatikbasierten Ansatz wird jedoch ein SQL-Injection-Angriff nur erkannt, wenn ein Schlüsselwort oder ein Sonderzeichen in einer SQL-Anweisung vorhanden ist oder Teil einer SQL-Anweisung ist, wodurch falsch positive Szenarien reduziert werden.

Szenario zur Nutzung des SQL-Grammatikschutzes

Betrachten Sie eine Erklärung “Wählen Sie meine Tickets aus und treffen wir uns auf der Gewerkschaftsstation” in einer HTTP-Anfrage. Obwohl die Anweisung keine gültige SQL-Anweisung ist, erkennt der vorhandene Pattern-Match-Ansatz die Anforderung als SQL-Injection-Angriff, da die Anweisung Schlüsselwörter wie “Select”, “und” und “Union” verwendet. Im Falle des SQL-Grammatikansatzes wird die Anweisung jedoch nicht als Verstoßangriff erkannt, da die Schlüsselwörter nicht in einer gültigen SQL-Anweisung vorhanden sind oder nicht Teil einer gültigen SQL-Anweisung sind.

Der grammatikbasierte Ansatz kann auch für die Erkennung von SQL-Injection-Angriffen inJSONPayloads konfiguriert werden. Um eine Entspannungsregel hinzuzufügen, können Sie die bestehenden Entspannungsregeln wiederverwenden. Feinkörnige Entspannungsregeln gelten auch für die SQL-Grammatik, für Regeln mit “ValueType” “Schlüsselwort”. In derJSONSQL-Grammatik kann die vorhandene URL-basierte Methode wiederverwendet werden.

Konfigurieren Sie den grammatikbasierten SQL-Schutz mit der CLI

Um die grammatikbasierte SQL-Erkennung zu implementieren, müssen Sie den Parameter “SqLinjectionGrammar” im Web App Firewall-Profil konfigurieren. Standardmäßig ist der Parameter deaktiviert. Alle vorhandenen SQL Injection-Aktionen werden mit Ausnahme des Lernens unterstützt. Jedes neue Profil, das nach einem Upgrade erstellt wurde, unterstützt die SQL-Injection-Grammatik und hat weiterhin den Standardtyp als “Sonderzeichen oder Schlüsselwort” und muss explizit aktiviert sein.

您一个der Eingabeaufforderung Folgendes ein:

add appfw profile  –SQLInjectionAction  -SQLInjectionGrammar ON/OFF 

Beispiel:

add appfw profile profile1 –SQLInjectionAction Block –SQLInjectionGrammar ON

Konfigurieren Sie den SQL-Pattern-Match-Schutz und den grammatikbasierten Schutz über die Befehlszeilenschnittstelle

您要是sowohl Grammatik-basierte als欧什n-Match-Ansätze aktiviert haben, führt die Appliance zuerst eine grammatikbasierte Erkennung durch, und wenn eine SQL-Einschleusungserkennung mit dem Aktionstyp auf blockiert festgelegt ist, wird die Anforderung blockiert (ohne die Erkennung mithilfe von Pattern-Match zu überprüfen).

您一个der Eingabeaufforderung Folgendes ein:

add appfw profile  –SQLInjectionAction  -SQLInjectionGrammar ON –SQLInjectionType  

Beispiel:

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

Konfigurieren Sie SQL Injection Check nur mit grammatikbasiertem Schutz über die Befehlszeilenschnittstelle

您一个der Eingabeaufforderung Folgendes ein:

add appfw profile  –SQLInjectionAction  -SQLInjectionGrammar ON –SQLInjectionType None 

Beispiel:

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

Binden Sie Entspannungsregeln für den grammatikbasierten SQL-Schutz über die Befehlszeilenschnittstelle

Wenn Ihre Anwendung erfordert, dass Sie dieSQLEinschleusungsprüfung für ein bestimmtes “ELEMENT” oder “ATTRIBUT” in der Nutzlast Bypass müssen, müssen Sie eine Entspannungsregel konfigurieren.

Hinweis:

Entspannungsregeln mit ValueType “Schlüsselwort” werden nur ausgewertet, wenn die Appliance mithilfe derSQLGrammatik die Erkennung durchführt.

DerSQLBefehl Entspannungsregeln毛皮Einschleusungsin死去spektion haben die folgende Syntax. Geben Sie an der Eingabeaufforderung Folgendes ein:

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

Beispiel:

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 regEXbind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX

Konfigurieren Sie den grammatikbasierten SQL-Schutz für JSON-Nutzlast über die Befehlszeilenschnittstelle

Um die grammatikbasierte SQL-Erkennung für die JSON-Nutzlast zu implementieren, müssen Sie den Parameter “JsonSqLinjectionGrammar” im Web App Firewall-Profil konfigurieren. Standardmäßig ist der Parameter deaktiviert. Alle vorhandenen SQL Injection-Aktionen werden mit Ausnahme des Lernens unterstützt. Jedes neue Profil, das nach einem Upgrade erstellt wurde, unterstützt die SQL-Injection-Grammatik und hat weiterhin den Standardtyp als “Sonderzeichen oder Schlüsselwort” und Sie müssen es explizit aktivieren.

您一个der Eingabeaufforderung Folgendes ein:

add appfw profile  -type JSON –JSONSQLInjectionAction  -JSONSQLInjectionGrammar ON/OFF 

Beispiel:

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

Konfigurieren Sie den SQL-Muster-Match-Schutz und den grammatikbasierten Schutz über die Befehlszeilenschnittstelle

您要是sowohl Grammatik-basierte als欧什n-Match-Prüfungen aktiviert haben, führt die Appliance zuerst eine grammatikbasierte Erkennung durch, und wenn eine SQL-Einschleusungserkennung mit dem Aktionstyp auf blockiert festgelegt ist, wird die Anforderung blockiert (ohne die Erkennung mithilfe von Pattern-Match zu überprüfen).

Hinweis:

Entspannungsregeln mit ValueType “Schlüsselwort” werden nur ausgewertet, wenn die Appliance die Erkennung mithilfe der SQL-Grammatik durchführt.

您一个der Eingabeaufforderung Folgendes ein:

add appfw profile  -type JSON –JSONSQLInjectionAction  -JSONSQLInjectionGrammar ON –JSONSQLInjectionType  

Beispiel:

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

Konfigurieren Sie den grammatikbasierten SQL-Schutz für JSON-Nutzlast über die Befehlszeilenschnittstelle

您一个der Eingabeaufforderung Folgendes ein:

add appfw profile  -type JSON –JSONSQLInjectionAction  -JSONSQLInjectionGrammar ON –JSONSQLInjectionType None`\ 

Beispiel:

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

Binden Sie URL-basierte Entspannungsregeln für JSON SQL grammatikbasierten Schutz über die Befehlszeilenschnittstelle

Wenn Ihre Anwendung erfordert, dass Sie dieJSON-Befehlseinschleusungsprüfung für ein bestimmtes “ELEMENT” oder “ATTRIBUT” in der Nutzlast umgehen müssen, können Sie eine Entspannungsregel konfigurieren. DerJSONBefehl Entspannungsregeln毛皮Einschleusungsin死去spektion haben die folgende Syntax. Geben Sie an der Eingabeaufforderung Folgendes ein:

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

Beispiel:

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 regEXbind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX

Konfigurieren Sie den grammatikbasierten SQL-Schutz über die grafische Benutzeroberfläche

Führen Sie die GUI-Prozedur ab, um die grammatikbasierte HTML SQL Injection Erkennung zu konfigurieren

  1. Navigieren Sie im Navigationsbereich zuSicherheit > Profile.
  2. Klicken Sie auf der SeiteProfileaufHinzufügen.
  3. Klicken Sie auf der SeiteCitrix Web App Firewall ProfileunterErweiterte EinstellungenaufSicherheitsprüfungen.
  4. Wechseln Sie im AbschnittSicherheitsprüfungenzu Einstellungen fürHTML SQL Injection.
  5. Klicken Sie auf das Symbol für die ausführbare Datei neben dem Kontrollkästchen.
  6. Klicken Sie aufAktionseinstellungen, um die SeiteEinstellungen für HMTL SQL Injectionaufzurufen.

    GUI-Konfiguration für SQL Grammatikschutz HTML-Nutzlast

  7. Aktivieren Sie dasKontrollkästchen Mit SQL-Grammatikprüfen.
  8. Klicken Sie aufOK.

Konfigurieren Sie den grammatikbasierten SQL-Schutz für JSON-Nutzlast über die grafische Benutzeroberfläche

Führen Sie die GUI-Prozedur ab, um die grammatikbasierte JSON SQL Injection Erkennung zu konfigurieren.

  1. Navigieren Sie im Navigationsbereich zuSicherheit > Profile.
  2. Klicken Sie auf der SeiteProfileaufHinzufügen.
  3. Klicken Sie auf der SeiteCitrix Web App Firewall ProfileunterErweiterte EinstellungenaufSicherheitsprüfungen.
  4. Wechseln Sie im AbschnittSicherheitsprüfungenzuJSON SQL Injection-Einstellungen.
  5. Klicken Sie auf das Symbol für die ausführbare Datei neben dem Kontrollkästchen.
  6. Klicken Sie aufAktionseinstellungen, um die SeiteJSON SQL Injection Settingsaufzurufen.
  7. Aktivieren Sie dasKontrollkästchen Mit SQL-Grammatikprüfen.
  8. Klicken Sie aufOK.

    GUI-Konfiguration für SQL Grammatikschutz JSON-Nutzlast