Referenz für ALB WAF Rule Selectors
Zuletzt aktualisiert am
Diese Seite listet alle Selector-Werte auf, die Sie in einer Custom-Rule-Bedingung auf der STACKIT Application Load Balancer Web Application Firewall (ALB WAF) verwenden können. Sie ergänzt den Abschnitt Regelstruktur auf der Seite zu den ALB WAF-Funktionen, der erläutert, wie die Selektoren zu einer vollständigen Regel kombiniert werden.
Das folgende Diagramm zeigt, wo die Selektoren auf dieser Seite in das ALB WAF-Objekt-Modell eingebettet sind. Ein ALB-Listener hängt sich an eine einzelne ALB WAF-Konfiguration, die höchstens ein Managed Rule Set (zum Beispiel das OWASP Core Rule Set) und höchstens eine Custom Rule Group referenzieren kann. Eine Custom Rule Group enthält Regeln, und jede Regel enthält eine oder mehrere Bedingungen, die aus den drei unten dokumentierten Selector-Typen aufgebaut sind.
Eine einzelne Bedingung in einer Custom Rule kombiniert drei Selektoren:
- Eine Variable – der Teil der HTTP-Transaktion, der geprüft werden soll.
- Null oder mehr Transformationen – Schritte zur Normalisierung, die auf die Variable vor dem Vergleich angewendet werden.
- Ein Operator – die Logik des Vergleichs, die gegen die transformierte Variable ausgeführt wird.
Nur die auf dieser Seite aufgeführten Werte werden von der ALB WAF-API akzeptiert. Coraza SecLang definiert zusätzliche Selektoren, die STACKIT derzeit nicht bereitstellt; Anfragen mit nicht unterstützten Werten werden zum Zeitpunkt der Validierung abgelehnt.
Variablen
Abschnitt betitelt „Variablen“Eine Variable identifiziert, welches Element der HTTP-Transaktion die Bedingung prüft. Geben Sie die Variable als condition.variable.type in der API an. Bei map-förmigen Variablen (Header, Cookies, Argumente) können Sie den Bereich durch Setzen von condition.variable.value auf einen einzelnen Schlüssel einschränken (zum Beispiel Host innerhalb von VARIABLE_REQUEST_HEADERS).
Die folgenden Tabellen listen alle unterstützten Variablen auf, gruppiert nach der Seite der Transaktion, die sie adressieren.
Response
Abschnitt betitelt „Response“Variablen in dieser Gruppe prüfen Daten, die Ihr Backend an den Client zurückgibt. Sie eignen sich zur Erkennung von Information Disclosure oder Backend-Fehlermustern.
| API-Konstante | Typ | Beschreibung | Beispiel |
|---|---|---|---|
VARIABLE_RESPONSE_CONTENT_LENGTH | Integer | Enthält die Gesamtlänge in Bytes des Response-Bodys, der vom Backend zurückgegeben wird. | 2048 |
VARIABLE_RESPONSE_HEADERS | Collection | Enthält alle HTTP-Header-Werte, die vom Backend an den Client zurückgegeben werden – zum Beispiel Cache-Control oder Server. | no-cache, no-store (for Cache-Control) |
VARIABLE_RESPONSE_HEADERS_NAMES | Collection | Enthält die rohen Namen oder Schlüssel aller HTTP-Response-Header, die vom Backend gesendet werden – zum Beispiel Set-Cookie. Verwenden Sie diese Variable, um die Header-Struktur auf Anomalien zu prüfen. | Content-Type, Set-Cookie, Server |
VARIABLE_RESPONSE_PROTOCOL | String | Enthält die vom Backend für die Response verwendete HTTP-Protokollversion – zum Beispiel HTTP/1.1 oder HTTP/2. | HTTP/1.1 |
VARIABLE_RESPONSE_STATUS | Integer | Enthält den dreistelligen HTTP-Statuscode, der vom Backend zurückgegeben wird – zum Beispiel 200 oder 404. Verwenden Sie diese Variable, um Regeln zu erstellen, die bei Backend-Fehlern auslösen, um Datenlecks zu verhindern. | 500 |
VARIABLE_RESPONSE_BODY | String | Enthält den rohen oder verarbeiteten HTTP-Response-Body, der vom Backend zurückgegeben wird. | {"error":"internal server error"} |
Request
Abschnitt betitelt „Request“Variablen in dieser Gruppe prüfen Daten, die der Client an Ihr Backend sendet. Sie decken die Request-Zeile, Header, Cookies und den Body ab.
| API-Konstante | Typ | Beschreibung | Beispiel |
|---|---|---|---|
VARIABLE_REQUEST_BASENAME | String | Enthält nur den Dateinamen aus dem URI-Pfad – zum Beispiel index.php in /folder/index.php. Verwenden Sie diese Variable, um bestimmte Dateitypen oder Skripte gegen spezifische Angriffsvektoren zu schützen. | login.php |
VARIABLE_REQUEST_BODY | String | Enthält rohen oder verarbeiteten HTTP-Request-Body-Inhalt – zum Beispiel POST-Formular-Daten, XML oder JSON-Payloads. | `username=admin&** |
VARIABLE_REQUEST_BODY_LENGTH | Integer | Enthält die Gesamtlänge in Bytes des HTTP-Request-Bodys. | 512 |
VARIABLE_REQUEST_COOKIES | Collection | Enthält alle HTTP-Cookie-Werte, die vom Client bereitgestellt werden. | abc123xyz (Cookie-Wert) |
VARIABLE_REQUEST_HEADERS | Collection | Enthält alle HTTP-Header-Werte aus dem Request – zum Beispiel den User-Agent-String oder Host. | Mozilla/5.0 (X11; Linux x86_64) (for User-Agent) |
VARIABLE_REQUEST_HEADERS_NAMES | Collection | Enthält Header-Namen oder -Schlüssel – zum Beispiel Authorization oder Content-Type – um fehlende oder veränderte Header zu erkennen. | Host, User-Agent, Authorization |
VARIABLE_REQUEST_METHOD | String | Gibt die verwendete HTTP-Methode an (zum Beispiel GET, POST). Nützlich, um bestimmte Methoden auf sensiblen Pfaden vollständig zu blockieren. | POST |
VARIABLE_REQUEST_PROTOCOL | String | Gibt die vom Client verwendete HTTP-Protokollversion an – zum Beispiel HTTP/1.1 oder HTTP/2. | HTTP/2 |
VARIABLE_REQUEST_URI_RAW | String | Enthält die rohe, nicht normalisierte Original-URL – einschließlich des Query-Strings – genau so, wie sie an den Load Balancer übermittelt wurde. Verwenden Sie diese Variable, um verschleierte Angriffsvektoren und Evasion-Techniken in ihrem Rohzustand zu erkennen. | /search?q=%3Cscript%3Ealert(1)%3C/script%3E |
Sonstige
Abschnitt betitelt „Sonstige“Variablen in dieser Gruppe decken Request-Argumente, Transport-Level-Attribute und den internen Engine-Zustand ab, der für das Verfassen von Regeln bereitgestellt wird.
| API-Konstante | Typ | Beschreibung | Beispiel |
|---|---|---|---|
VARIABLE_ARGS_GET | Collection | Eine Sammlung aller URL-Parameter und -Werte (alles nach dem ?, zum Beispiel id=5 in index.php?id=5). | 5 (for key id) |
VARIABLE_ARGS_POST | Collection | Enthält alle Parameter und Werte aus dem POST- oder PUT-Request-Body – zum Beispiel Formular-Daten oder API-Payloads. | admin (for key username) |
VARIABLE_FULL_REQUEST_LENGTH | Integer | Enthält die Gesamtlänge des HTTP-Requests in Bytes – die Summe aus Request-Zeile, Headern und Body. Verwenden Sie diese Variable, um Denial-of-Service-Versuche (DoS) durch überdimensionierte Requests zu blockieren. | 4096 |
VARIABLE_MATCHED_VAR | String | Enthält den genauen Wert der Variable, die die Regel ausgelöst hat. Verwenden Sie diese Variable, um das für den Alert verantwortliche Element zu protokollieren. | <script>alert(1)</script> |
VARIABLE_QUERY_STRING | String | Enthält den vollständigen, rohen URL-Query-String nach dem ? – zum Beispiel search=cloud&sort=desc. Anders als VARIABLE_ARGS_GET wird der String als Ganzes ausgewertet, anstatt in einzelne Schlüssel oder Werte aufgeteilt zu werden. | search=cloud&sort=desc |
VARIABLE_REMOTE_ADDR | String | Enthält die IP-Adresse des Clients oder Upstream-Proxys, der den Request sendet. Verwenden Sie diese Variable als Grundlage für IP-Allow-Listing oder um bösartige IP-Adressen zu blockieren. | 203.0.113.42 |
VARIABLE_REMOTE_PORT | Integer | Enthält die Quell-Port-Nummer des Clients für die Load-Balancer-Verbindung. | 54321 |
Operatoren
Abschnitt betitelt „Operatoren“Ein Operator definiert, wie eine transformierte Variable mit einem angegebenen Wert verglichen wird. Geben Sie den Operator in condition.operator.type und das Argument für den Vergleich in condition.operator.value an.
Die folgende Tabelle listet die unterstützten Operatoren und ihre erwarteten Typen auf. Vergleichs-Operatoren (OPERATOR_EQ, OPERATOR_GE, OPERATOR_GT, OPERATOR_LE, OPERATOR_LT) behandeln beide Seiten als Ganzzahlen.
| API-Konstante | Typ | Beschreibung | Beispiel |
| :-------------------------------- | :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------ | -------------- |
| OPERATOR_BEGINS_WITH | String | Gibt true zurück, wenn die Eingabe mit dem Parameter-String beginnt. | /admin |
| OPERATOR_CONTAINS | String | Gibt true zurück, wenn der Parameter-String irgendwo in der Eingabe vorkommt. | sqlmap |
| OPERATOR_ENDS_WITH | String | Gibt true zurück, wenn die Eingabe mit dem Parameter-String endet. | .php |
| OPERATOR_EQ | Integer | Numerische Gleichheit. Gibt true zurück, wenn der Wert der Eingabe dem Parameter entspricht. | 403 |
| OPERATOR_GE | Integer | Numerisch größer als oder gleich. Gibt true zurück, wenn der Wert der Eingabe größer als oder gleich dem Parameter ist. | 500 |
| OPERATOR_GT | Integer | Numerisch größer als. Gibt true zurück, wenn der Wert der Eingabe größer als der Parameter ist. | 1048576 |
| OPERATOR_IP_MATCH | String | Gleicht eine IPv4- oder IPv6-Adresse gegen eine komma-separierte Liste von einzelnen IPs oder CIDR-Bereichen ab (zum Beispiel 192.168.1.0/24,10.0.0.5). | 192.168.1.0/24,10.0.0.5 |
| OPERATOR_LE | Integer | Numerisch kleiner als oder gleich. Gibt true zurück, wenn der Wert der Eingabe kleiner als oder gleich dem Parameter ist. | 100 |
| OPERATOR_LT | Integer | Numerisch kleiner als. Gibt true zurück, wenn der Wert der Eingabe kleiner als der Parameter ist. | 10 |
| OPERATOR_RX | String | Regulärer Ausdrucks-Match mit RE2-Syntax. Unterstützt bis zu neun Capture Groups. | (?i)(union.\*select | drop\s+table) |
| OPERATOR_STREQ | String | Groß-/Kleinschreibung-sensitiver String-Vergleich. Gibt true zurück, wenn der Eingabe-String identisch mit dem Parameter ist. | DELETE |
| OPERATOR_STRMATCH | String | Groß-/Kleinschreibung-sensitiver Substring-Match. Gibt true zurück, wenn der Parameter irgendwo in der Eingabe vorkommt. Kombinieren Sie diesen Operator mit TRANSFORMATION_LOWERCASE für Groß-/Kleinschreibung-unabhängige Prüfungen. | <script> |
| OPERATOR_VALIDATE_SCHEMA | String | Validiert den aktuellen Request- oder Response-Body gegen ein JSON Schema. Gibt true zurück, wenn der Body das Schema verletzt. | {"type":"object","required":["id"]} |
| OPERATOR_VALIDATE_URL_ENCODING | None | Gibt true zurück, wenn die Eingabe fehlerhaft prozent-kodierte Sequenzen enthält (zum Beispiel nicht-hexadezimale Zeichen nach %). | (kein Wert) |
| OPERATOR_VALIDATE_UTF8_ENCODING | None | Gibt true zurück, wenn die Eingabe kein gültiges UTF-8 ist, einschließlich fehlerhafter Sequenzen und überlanger Kodierungen. | (kein Wert) |
| OPERATOR_WITHIN | String | Gibt true zurück, wenn der Wert der Eingabe im Parameter gefunden wird (der Parameter ist der Haystack, die Eingabe ist die Nadel). Nützlich für das Allow-Listing einer Menge von festen Werten. | GET,HEAD,POST |
Transformationen
Abschnitt betitelt „Transformationen“Eine Transformation normalisiert die Variable, bevor der Operator ausgeführt wird. Geben Sie Transformationen als geordnete Liste in condition.transformations an; die Engine wendet sie in der angegebenen Reihenfolge an. Verwenden Sie TRANSFORMATION_NONE am Anfang der Liste, um die Pipeline explizit zu machen und das Erben von Standard-Werten zu vermeiden.
Die folgende Tabelle listet alle unterstützten Transformationen auf.
| API-Konstante | Typ | Beschreibung |
|---|---|---|
TRANSFORMATION_NONE | None | Löscht alle zuvor angewendeten Transformationen. Verwenden Sie diese als ersten Eintrag, um eine saubere Pipeline zu gewährleisten. |
TRANSFORMATION_LENGTH | None | Ersetzt die Eingabe durch ihre Länge in Bytes als String. Zum Beispiel wird ABCDE zu 5. |
TRANSFORMATION_LOWERCASE | None | Konvertiert alle Zeichen in Kleinbuchstaben. |
TRANSFORMATION_UPPERCASE | None | Konvertiert alle Zeichen in Großbuchstaben. |
TRANSFORMATION_TRIM | None | Entfernt Leerzeichen von beiden Enden der Eingabe. |
TRANSFORMATION_UTF8_TO_UNICODE | None | Konvertiert UTF-8-Sequenzen in Unicode-Codepunkte, um nicht-englische Eingaben zu normalisieren und False Positives sowie False Negatives zu reduzieren. |
Verwandte Seiten
Abschnitt betitelt „Verwandte Seiten“- [ALB WAF Funktionen](/de/products/network/load-balancing-and-content-delivery/application-load-balancer/basics/features-ALB WAF/) — wie Variablen, Operatoren und Transformationen zu einer Regel kombiniert werden.
- Grundkonzepte der ALB WAF — Objekt-Modell und Lebenszyklus.
- Coraza SecLang Referenz — vorgelagerte Grammatik. STACKIT stellt eine Teilmenge über eine strukturierte JSON-API bereit.