Citrix ADC

Operationen für HTTP-, HTML- und XML-Codierung und “sichere” Zeichen

Die folgenden Vorgänge arbeiten mit der Kodierung von HTML-Daten in einer Anforderung oder Antwort und XML-Daten in einem POST-Text.

  • <text>.HTML_XML_SAFE: Wandelt Sonderzeichen wie in den folgenden Beispielen in ein sicheres XML-Format um:

    Eine linksgerichtete Winkelklammer (<) wird in < Eine rechtsgerichtete Winkelklammer (>) wird konvertiert in > Ein kaufmännisches Und-Zeichen (&) wird in & umgewandelt. Dieser Vorgang schützt vor standortübergreifenden Skripting-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. contains(“myQueryString”)

  • <text>.HTTP_HEADER_SAFE: Konvertiert alle neuen Zeilenzeichen (‘n’) im Eingabetext in ‘%0A’, damit die Eingabe sicher in HTTP-Headern verwendet werden kann.

    Diese Operation schützt vor Response-Splitting Angriffen.

    Die maximale Länge des transformierten Textes beträgt 2048 Byte. Dies ist ein schreibgeschützter Vorgang.

  • **<text>.HTTP_URL_SAFE: Konvertiert unsichere URL-Zeichen in ‘%xx’ Werte, wobei “xx” eine hexbasierte Darstellung des Eingabezeichens ist. Beispielsweise wird das kaufmännische Und-Zeichen (&) als %26 in der URL-sicheren Kodierung dargestellt. Die maximale Länge des transformierten Textes beträgt 2048 Byte. Dies ist ein schreibgeschützter Vorgang.

    Im Folgenden sind URL-sichere Zeichen. Alle anderen sind unsicher:

    • Alpha-numerische Zeichen: a-z, A-Z, 0-9
    • Asterix: *
    • kaufmännisches Und-Zeichen: &
    • AT-Zeichen: @
    • Doppelpunkt: :
    • Komma: ,
    • Dollar: $
    • Punkt: .
    • Gleich: =
    • Ausrufezeichen: !
    • Bindestrich: -
    • Klammer öffnen und schließen: (, )
    • Prozent: %
    • Plus: +
    • Semikolon: ;
    • Einzelnes Zitat: ‘
    • Schrägstrich: /
    • Fragezeichen: ?
    • Tilde: ~
    • Unterstrich: _
  • .MARK_SAFE:<text>

    Markiert den Text als sicher, ohne irgendeine Art von Datentransformation anzuwenden.

  • <text>.SET_TEXT_MODE (URLENCODED|NOURLENCODED)

    Transformiert alle %HH-Kodierung im Byte-Stream. Dieser Vorgang funktioniert mit Zeichen (nicht Bytes). Standardmäßig stellt ein einzelnes Byte ein Zeichen in der ASCII-Codierung dar. Wenn Sie jedoch den URLENCODED-Modus angeben, können drei Bytes ein Zeichen darstellen.

    Im folgenden Beispiel wählt ein PREFIX(3)-Vorgang die ersten 3 Zeichen in einem Ziel aus.

    http.req.url.hostname.prefix(3)

    Im folgenden Beispiel kann Citrix ADC bis zu 9 Bytes aus dem Ziel auswählen:

    http.req.url.hostname.set_text_mode(urlencoded).prefix(3)

  • <text>.SET_TEXT_MODE (PLUS_AS_SPACE|NO_PLUS_AS_SPACE):

    Gibt an, wie das Pluszeichen (+) behandelt werden soll. Die Option PLUS_AS_SPACE ersetzt ein Pluszeichen durch Leerzeichen. Zum Beispiel wird der Text “Hallo+Welt” zu “hallo Welt. “ Die Option NO_PLUS_AS_SPACE lässt Pluszeichen wie sie sind.

  • <text>.SET_TEXT_MODE (BACKSLASH_ENCODED|NO_BACKSLASH_ENCODED):

    Gibt an, ob eine umgekehrte Schrägstriche Decodierung für das Textobjekt durchgeführt wird, das von dargestellt wird <text>.

    Wenn BACKSLASH_ENCODED angegeben ist, führt der SET_TEXT_MODE Operator die folgenden Operationen für das Textobjekt aus:

    • Alle Vorkommen von “XXX” werden durch das Zeichen “Y” ersetzt (wobei XXX eine Zahl im Oktalsystem darstellt und Y das ASCII-Äquivalent von XXX darstellt). Der gültige Bereich der Oktalwerte für diesen Codierungstyp beträgt 0 bis 377. Zum Beispiel wird der codierte Text “http\72//” und http\072//” in beide dekodiert in <http://>, wobei der Doppelpunkt (:) das ASCII-Äquivalent des Oktalwerts “72” ist.
    • Alle Vorkommen von “xHH” werden durch das Zeichen “Y” ersetzt (HH steht für eine Zahl im Hexadezimalsystem und Y bezeichnet das ASCII-Äquivalent von HH. Zum Beispiel wird der codierte Text “http\x3a//” dekodiert in <http://>, wobei der Doppelpunkt (:) das ASCII-Äquivalent des hexadezimalen Wertes “3a” ist.
    • Alle Vorkommen von “UWWxx” werden durch die Zeichensequenz “YZ” ersetzt (wobei WW und XX zwei unterschiedliche hexadezimale Werte darstellen und Y und Z ihre ASCII-Äquivalente von WW bzw. XX darstellen. Zum Beispiel werden der codierte Text “http%u3a2f/” und “http%u003a//” dekodiert<http://>, wobei “3a” und “2f” zwei hexadezimale Werte sind und der Doppelpunkt (:) und der Schrägstrich (“/”) ihre ASCII-Äquivalente darstellen. jeweils.
    • 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 Rückwärtsdekodierung durchgeführt.

  • <text>.SET_TEXT_MODE(BAD_ENCODE_RAISE_UNDEF|NO_BAD_ENCODE_RAISE_UNDEF):

    Führt die zugeordnete undefinierte Aktion aus, wenn entweder der URLENCODED oder der BACKSLASH_ENCODED Modus gesetzt ist und eine fehlerhafte Kodierung, die dem angegebenen Codierungsmodus entspricht, im Textobjekt gefunden wird, das von repräsentiert wird <text>.

    Wenn NO_BAD_ENCODE_RAISE_UNDEF angegeben ist, wird die zugeordnete undefinierte Aktion nicht ausgeführt, wenn eine fehlerhafte Kodierung im Textobjekt auftritt, das von repräsentiert wird <text>.

Operationen für HTTP-, HTML- und XML-Codierung und “sichere” Zeichen