Operationen für HTTP-, HTML- und XML-Kodierung und „sichere“ Zeichen
Die folgenden Operationen funktionieren mit der Kodierung von HTML-Daten in einer Anfrage oder Antwort und mit XML-Daten in einem POST-Text.
.HTML_XML_SAFE: Transformiert Sonderzeichen in ein sicheres XML-Format, wie in den folgenden Beispielen:Eine nach links zeigende Winkelklammer (<) wird in < umgewandelt Eine nach rechts zeigende Winkelklammer (>) wird in > Ein kaufmännisches Und-Zeichen (&) umgewandelt wird in & Diese Operation schützt vor Cross-Site-Scripting-Angriffen. Die maximale Länge des transformierten Textes beträgt 2048 Byte. Dies ist ein schreibgeschützter Vorgang.
Nach dem Anwenden der Transformation werden zusätzliche Operatoren, die Sie im Ausdruck angeben, auf den ausgewählten Text angewendet. Es folgt ein Beispiel:
http.req.url.query.html_xml_safe. enthält („myQueryString“)
.HTTP_HEADER_SAFE: Konvertiert alle Neue-Zeile-Zeichen (‘\n’) im eingegebenen Text in ‘%0A’, damit die Eingabe sicher in HTTP-Headern verwendet werden kann.Diese Operation schützt vor Angriffen, bei denen die Reaktion aufgeteilt wird.
Die maximale Länge des transformierten Textes beträgt 2048 Byte. Dies ist ein schreibgeschützter Vorgang.
.HTTP_URL_SAFE: Konvertiert unsichere URL-Zeichen in ‘%xx’-Werte, wobei “xx” eine hexadezimale Darstellung des Eingabezeichens ist. Beispielsweise wird das Ampersand (&) in der URL-sicheren Kodierung als %26 dargestellt. Die maximale Länge des transformierten Textes beträgt 2048 Byte. Dies ist ein schreibgeschützter Vorgang.Im Folgenden finden Sie URL-sichere Zeichen. Alle anderen sind unsicher:
- Alphanumerische Zeichen: a-z, A-Z, 0-9
- Sternchen: „*“
- Ampersand: „&“
- AT-Zeichen: „@“
- Doppelpunkt: „:“
- Komma: „,“
- Dollar: „$“
- Punkt:“. „
- Entspricht: „=“
- Ausrufezeichen: „! „
- Bindestrich: „-“
- Klammern öffnen und schließen: „(„, „)“
- Prozent: „%“
- Plus: „+“
- Semikolon: „;“
- Einfaches Anführungszeichen: „’“
- Schrägstrich: „/“
- Fragezeichen: „? „
- Tilde: „~“
- Unterstrich: „_“
.MARK_SAFE: Markiert den Text als sicher, ohne irgendeine Art von Datentransformation anzuwenden.
.SET_TEXT_MODE(URLENCODED|NOURLENCODED) Transformiert die gesamte %HH-Kodierung im Bytestream. Diese Operation funktioniert mit Zeichen (nicht mit Bytes). Standardmäßig steht ein einzelnes Byte für ein Zeichen in ASCII-Codierung. Wenn Sie jedoch den URLENCODED-Modus angeben, können drei Byte ein Zeichen darstellen.
Im folgenden Beispiel wählt eine PREFIX (3) -Operation die ersten 3 Zeichen in einem Ziel aus.
http.req.url.hostname.prefix(3)
Im folgenden Beispiel kann der NetScaler bis zu 9 Byte aus dem Ziel auswählen:
http.req.url.hostname.set_text_mode(urlencoded).prefix(3)
.SET_TEXT_MODE(PLUS_AS_SPACE|NO_PLUS_AS_SPACE): Gibt an, wie das Pluszeichen (+) behandelt wird. Die Option PLUS_AS_SPACE ersetzt ein Pluszeichen durch Leerzeichen. Zum Beispiel wird aus dem Text „Hallo+Welt“ „Hallo Welt“. „ Die Option NO_PLUS_AS_SPACE lässt Pluszeichen so, wie sie sind.
.SET_TEXT_MODE(BACKSLASH_ENCODED|NO_BACKSLASH_ENCODED): Gibt an, ob für das durch
dargestellte Textobjekt eine Backslash-Dekodierung durchgeführt wird. Wenn BACKSLASH_ENCODED angegeben ist, führt der SET_TEXT_MODE-Operator die folgenden Operationen für das Textobjekt aus:
- Jedes Vorkommen von „\ XXX“ wird durch das Zeichen „Y“ ersetzt (wobei XXX für eine Zahl im Oktalsystem und Y für das ASCII-Äquivalent von XXX steht). Der gültige Bereich von Oktalwerten für diese Art der Kodierung liegt zwischen 0 und 377. Beispielsweise werden der codierte Text „http\ 72//“ und „http\ 072//“ beide dekodiert
, wobei der Doppelpunkt (:) das ASCII-Äquivalent des Oktalwerts „72” ist. - Jedes Vorkommen von „\ xHH“ wird durch das Zeichen „Y“ ersetzt (HH steht für eine Zahl im Hexadezimalsystem und Y steht für das ASCII-Äquivalent von HH). Zum Beispiel wird der codierte Text „http\ x3a//“ dekodiert
, wobei der Doppelpunkt (:) das ASCII-Äquivalent des Hexadezimalwerts „3a“ ist. - Jedes Vorkommen von „\ uWWxx“ wird durch die Zeichenfolge „YZ“ ersetzt (wobei WW und XX für zwei verschiedene Hexadezimalwerte stehen und Y und Z ihre ASCII-Äquivalente von WW bzw. XX darstellen). Zum Beispiel werden die codierten Texte „http%u3a2f/“ und „http%u003a//“ beide dekodiert, wobei „3a“ und „2f“ zwei Hexadezimalwerte sind und der Doppelpunkt (:) und der Schrägstrich („/“) jeweils ihre ASCII-Entsprechungen darstellen.
- Alle Vorkommen von „\ b“, „\ n“, „\ t“, „\ f“ und „\ r“ werden durch die entsprechenden ASCII-Zeichen ersetzt.
Wenn NO_BACKSLASH_ENCODED angegeben ist, wird für das Textobjekt keine Backslash-Dekodierung durchgeführt.
- Jedes Vorkommen von „\ XXX“ wird durch das Zeichen „Y“ ersetzt (wobei XXX für eine Zahl im Oktalsystem und Y für das ASCII-Äquivalent von XXX steht). Der gültige Bereich von Oktalwerten für diese Art der Kodierung liegt zwischen 0 und 377. Beispielsweise werden der codierte Text „http\ 72//“ und „http\ 072//“ beide dekodiert
.SET_TEXT_MODE(BAD_ENCODE_RAISE_UNDEF|NO_BAD_ENCODE_RAISE_UNDEF): Führt die zugehörige undefinierte Aktion aus, wenn entweder der URLENCODED- oder der BACKSLASH_ENCODED-Modus eingestellt ist und in dem durch
dargestellten Textobjekt eine schlechte Codierung gefunden wird, die dem angegebenen Kodierungsmodus entspricht. Wenn NO_BAD_ENCODE_RAISE_UNDEF angegeben ist, wird die zugehörige undefinierte Aktion nicht ausgeführt, wenn das durch
dargestellte Textobjekt fehlerhafte Codierung enthält.