Opérations pour le codage HTTP, HTML et XML et caractères « sûrs »

Les opérations suivantes fonctionnent avec l’encodage 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 : transforme les caractères spéciaux en format XML sécurisé, comme dans les exemples suivants :

    Un crochet d’angle pointant vers la gauche (<) est converti en < Un crochet d’angle pointant vers la droite (>) est converti en > Une esperluette (&) est converti en & Cette opération protège contre les attaques de script intersite. La longueur maximale du texte transformé est de 2048 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. contains(“myQueryString”)

  • <text>.HTTP_HEADER_SAFE : Convertit tous les nouveaux caractères de ligne (‘n’) dans le texte d’entrée en ‘%0A’ pour permettre à l’entrée d’être utilisée en toute sécurité dans les en-têtes HTTP.

    Cette opération protège contre les attaques qui séparent les interventions.

    La longueur maximale du texte transformé est de 2048 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 hexagonale 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 2048 octets. Il s’agit d’une opération en lecture seule.

    Voici les caractères sécurisés URL. Tous les autres sont dangereux :

    • Caractères alphanumériques : a-z, A-Z, 0-9
    • Astérix : « * »
    • Esperluette : « & »
    • Signe arobase : « @ »
    • Deux-points : «  : »
    • Virgule : « , »
    • Dollar : « $ »
    • Dot: “.”
    • Egal à : « = »
    • Point d’exclamation : « ! »
    • Tiret : « - »
    • Ouvrir et fermer les parenthèses : « (« , « ) »
    • Pourcentage : «  % »
    • Plus : « + »
    • point-virgule : «  ; »
    • Citation simple : « ’ »
    • Barre oblique : « / »
    • Point d’interrogation : « ? »
    • Tilde : « ~ »
    • Soulignement : « _ »
  • <text>.MARK_SAFE:

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

  • <text>.SET_TEXT_MODE(URLENCODED|NOURLENCODED)

    Transforme tout le codage %HH dans le flux d’octets. Cette opération fonctionne avec des caractères (pas des octets). Par défaut, un octet unique 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, Citrix ADC peut sélectionner jusqu’à 9 octets de la cible :

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

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

    Spécifie comment traiter le caractère plus (+). L’option PLUS_AS_SPACE remplace un 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 qu’ils sont.

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

    Spécifie si le décodage de 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 valide de valeurs octales pour ce type d’encodage est de 0 à 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é sur <http://>, où le deux-points (:) est 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, le texte codé “http%u3a2f/” et “http%u003a//” seront tous les 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.

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

    Effectue l’action non définie associée si le mode URLENCODED ou BACKSLASH_ENCODED est défini et si un codage incorrect correspondant au mode de codage spécifié est rencontré 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 lorsque le codage est incorrect dans l’objet texte représenté par <text>.

Opérations pour le codage HTTP, HTML et XML et caractères « sûrs »