ADC

Opérations relatives au codage HTTP, HTML et XML et aux caractères « sécurisés »

Les opérations suivantes fonctionnent avec le codage des données HTML dans une requête ou une réponse et des données XML dans un corps POST.

  • <text>.HTML_XML_SAFE: les caractères spéciaux en format XML sécurisé, comme dans les exemples suivants

    Un support d’angle pointant vers la gauche (<) est converti en < Un support d’angle pointant vers la droite (>) est converti en Une esperluette (&) est convertie en & Cette opération protège contre les attaques de script intersites. La longueur maximale du texte transformé est de 2 048 octets. Il s’agit d’une opération en lecture seule.

    Après avoir appliqué la transformation, les opérateurs supplémentaires que vous spécifiez dans l’expression sont appliqués au texte sélectionné. Voici un exemple :

    http.req.url.query.html_xml_safe. contient (« MyQueryString »)

  • <text>.HTTP_HEADER_SAFE: convertit tous les nouveaux caractères de ligne (\n’) du texte d’entrée en « 5A » pour permettre une utilisation sûre de l’entrée dans les en-têtes HTTP.

    Cette opération permet de se prémunir contre les attaques par fractionnement des réponses.

    La longueur maximale du texte transformé est de 2 048 octets. Il s’agit d’une opération en lecture seule.

  • <text>.HTTP_URL_SAFE: convertit les caractères d’URL non sécurisés en valeurs « %xx », où « xx » est une représentation hexadécimale du caractère d’entrée. Par exemple, l’esperluette (&) est représentée comme%26 dans le codage sécurisé URL. La longueur maximale du texte transformé est de 2 048 octets. Il s’agit d’une opération en lecture seule.

    Vous trouverez ci-dessous les caractères sécurisés pour les URL. Tous les autres ne sont pas sûrs :

    • Caractères alphanumériques : a-z, A-Z, 0-9
    • Astérix : « * »
    • Eperluette : « & »
    • Signe AT : « @ »
    • Deux points : « : »
    • Virgule : « , »
    • Dollar : « $ »
    • Dot: “.”
    • Égal à : « = »
    • Point d’exclamation : « ! »
    • Trait d’union : « - »
    • Ouvrir et fermer les parenthèses : « (« , « ) »
    • Pourcentage : « % »
    • Plus : « + »
    • Point-virgule : « ; »
    • Citation unique : « ’»
    • barre oblique : «/»
    • Point d’interrogation : « ? »
    • Titre : « ~ »
    • Souligner : « _ »
  • <text>.MARK_SAFE:

    Marque le texte comme sûr sans appliquer aucun type de transformation de données.

  • **.SET_TEXT_MODE(URLENCODED NOURLENCODED)**

    Transforme tout le codage %HH du flux d’octets. Cette opération fonctionne avec des caractères (pas des octets). Par défaut, un seul octet représente un caractère dans le codage ASCII. Toutefois, si vous spécifiez le mode URLENCODED, trois octets peuvent représenter un caractère.

    Dans l’exemple suivant, une opération PREFIX (3) sélectionne les 3 premiers caractères d’une cible.

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

    Dans l’exemple suivant, NetScaler peut sélectionner jusqu’à 9 octets à partir de la cible :

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

  • **.SET_TEXT_MODE(PLUS_AS_SPACE NO_PLUS_AS_SPACE) :**

    Spécifie comment traiter le caractère plus (+). L’option PLUS_AS_SPACE remplace le caractère plus par un espace blanc. Par exemple, le texte “hello+world” devient “hello world.” L’option NO_PLUS_AS_SPACE laisse les caractères plus tels quels.

  • **.SET_TEXT_MODE(BACKSLASH_ENCODED NO_BACKSLASH_ENCODED):**

    Spécifie si le décodage de la barre oblique inverse est effectué sur l’objet texte représenté par <text>.

    Si BACKSLASH_ENCODED est spécifié, l’opérateur SET_TEXT_MODE effectue les opérations suivantes sur l’objet texte :

    • Toutes les occurrences de “\XXX” seront remplacées par le caractère “Y” (où XXX représente un nombre dans le système octal et Y représente l’équivalent ASCII de XXX). La plage de valeurs octales valide pour ce type de codage est comprise entre 0 et 377. Par exemple, le texte codé “http\72//” et http\072//” seront tous les deux décodés sur <http://>, où le deux-points (:) est l’équivalent ASCII de la valeur octale “72”.
    • Toutes les occurrences de “\xHH” seront remplacées par le caractère “Y” (HH représente un nombre dans le système hexadécimal et Y indique l’équivalent ASCII de HH. Par exemple, le texte codé « http \ x3a// » sera décodé <http://>, où les deux points (:) sont l’équivalent ASCII de la valeur hexadécimale « 3a ».
    • Toutes les occurrences de « \ uWWxx » seront remplacées par la séquence de caractères « YZ » (où WW et XX représentent deux valeurs hexadécimales distinctes et Y et Z représentent leurs équivalents ASCII de WW et XX respectivement). Par exemple, les textes codés « http%u3a2f/ » et « http%u003a// » seront tous deux décodés <http://>, où « 3a » et « 2f » sont deux valeurs hexadécimales et les deux points (:) et la barre oblique («/») représentent leurs équivalents ASCII respectivement.
    • Toutes les occurrences de « \ b », « \ n », « \ t », « \ f » et « \ r » sont remplacées par les caractères ASCII correspondants.

    Si NO_BACKSLASH_ENCODED est spécifié, le décodage de la barre oblique inverse n’est pas effectué sur l’objet texte.

  • **.SET_TEXT_MODE(BAD_ENCODE_RAISE_UNDEF NO_BAD_ENCODE_RAISE_UNDEF) :**

    Exécute l’action non définie associée si le mode URLENCODED ou BACKSLASH_ENCODED est défini et qu’un mauvais codage correspondant au mode de codage spécifié est détecté dans l’objet texte représenté par <text>.

    Si NO_BAD_ENCODE_RAISE_UNDEF est spécifié, l’action non définie associée ne sera pas exécutée en cas de mauvais encodage dans l’objet texte représenté par <text>.

Opérations relatives au codage HTTP, HTML et XML et aux caractères « sécurisés »