ADC

Operaciones para codificación HTTP, HTML y XML y caracteres “seguros”

Las siguientes operaciones funcionan con la codificación de datos HTML en una solicitud o respuesta y datos XML en un cuerpo POST.

  • <text>.HTML_XML_SAFE: Transforma caracteres especiales en formato seguro XML, como en los ejemplos siguientes:

    Un corchete angular que apunta hacia la izquierda (<) se convierte en < Un corchete angular que apunta a la derecha ( ) se convierte a > Un símbolo (&) se convierte en & Esta operación protege contra los ataques de scripts entre sitios . La longitud máxima del texto transformado es de 2048 bytes. Se trata de una operación de solo lectura.

    Después de aplicar la transformación, los operadores adicionales que especifique en la expresión se aplican al texto seleccionado. A continuación se presenta un ejemplo:

    http.req.url.query.html_xml_safe. contiene (“MyQueryString”)

  • <text>.HTTP_HEADER_SAFE: Convierte todos los nuevos caracteres de línea (‘n’) en el texto de entrada a ‘%0A’ para permitir que la entrada se utilice de forma segura en encabezados HTTP.

    Esta operación protege contra ataques de división de respuesta.

    La longitud máxima del texto transformado es de 2048 bytes. Se trata de una operación de solo lectura.

  • <texto>.HTTP_URL_SAFE: Convierte caracteres URL no seguros en valores ‘%xx’, donde “xx” es una representación basada en hexágono del carácter de entrada. Por ejemplo, el signo y comercial (&) se representa como%26 en codificación segura de URL. La longitud máxima del texto transformado es de 2048 bytes. Se trata de una operación de solo lectura.

    Los siguientes son los caracteres seguros de URL. Todos los demás son inseguros:

    • Caracteres alfanuméricos: A-z, A-Z, 0-9
    • Asterix: “*”
    • Y comercial: “&”
    • At-Signo: “@”
    • Dos puntos: “:”
    • Comma: “,”
    • Dólar: “$”
    • Punto: “.”
    • Es igual a: “=”
    • Signo de exclamación: “! “
    • Guión: “-“
    • Abrir y cerrar paréntesis: “(“, “)”
    • Porcentaje: “%”
    • Más: “+”
    • Punto y coma: “;”
    • Comilla simple: “’”
    • Barra: “/”
    • Signo de interrogación: “?”
    • Tilde: “~”
    • Subrayado: “_”
  • <text>MARK_SAFE:

    Marca el texto como seguro sin aplicar ningún tipo de transformación de datos.

  • <text>.SET_TEXT_MODE (URLENCODED|NOURLENCODED)

    Transforma toda la codificación%hh en la secuencia de bytes. Esta operación funciona con caracteres (no bytes). De forma predeterminada, un solo byte representa un carácter en codificación ASCII. Sin embargo, si especifica el modo URLENCODED, tres bytes pueden representar un carácter.

    En el ejemplo siguiente, una operación PREFIX (3) selecciona los 3 primeros caracteres de un destino.

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

    En el ejemplo siguiente, Citrix ADC puede seleccionar hasta 9 bytes del destino:

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

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

    Especifica cómo tratar el carácter más (+). La opción PLUS_AS_SPACE reemplaza un carácter más por espacio en blanco. Por ejemplo, el texto “Hola+mundo” se convierte en “hola mundo”. La opción NO_PLUS_AS_SPACE deja caracteres más tal como están.

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

    Especifica si la decodificación de barras inversas se realiza o no en el objeto de texto representado por <text>.

    Si se especifica BACKSLASH_ENDIED, el operador SET_TEXT_MODE realiza las siguientes operaciones en el objeto de texto:

    • Todas las apariciones de “XXX” se reemplazarán con el carácter “Y” (donde XXX representa un número en el sistema octal y Y representa el equivalente ASCII de XXX). El rango válido de valores octales para este tipo de codificación es de 0 a 377. Por ejemplo, el texto codificado “http72//” y http072//” se decodificarán a <http://>, donde el colon (:) es el equivalente ASCII del valor octal “72”.
    • Todas las apariciones de “xHH” se reemplazarán con el carácter “Y” (HH representa un número en el sistema hexadecimal e Y denota el equivalente ASCII de HH. Por ejemplo, el texto codificado “http\x3a//” se decodificará a <http://>, donde los dos puntos (:) es el equivalente ASCII del valor hexadecimal “3a”.
    • Todas las apariciones de “\uWWXX” serán reemplazadas por la secuencia de caracteres “YZ” (donde WW y XX representan dos valores hexadecimales distintos y Y y Z representan sus equivalentes ASCII de WW y XX respectivamente. Por ejemplo, el texto codificado “http%u3a2f/” y “http%u003a//” se decodificarán a <http://>, donde “3a” y “2f” son dos valores hexadecimales y los dos puntos (:) y la barra diagonal (“/”) representan sus equivalentes ASCII respectivamente.
    • Todas las apariciones de “b”, “n”, “t”, “f” y “r” se reemplazan con los caracteres ASCII correspondientes.

    Si se especifica NO_BACKSLASH_ENCODED, la decodificación de barras invertidas no se realiza en el objeto de texto.

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

    Realiza la acción indefinida asociada si se establece el modo URLENCODED o BACKSLASH_ENCODED y se encuentra una codificación incorrecta correspondiente al modo de codificación especificado en el objeto de texto representado por <text>.

    Si se especifica NO_BAD_ENCODE_RAISE_UNDEF, la acción indefinida asociada no se realizará cuando se encuentre una codificación incorrecta en el objeto de texto representado por <text>.

Operaciones para codificación HTTP, HTML y XML y caracteres “seguros”

En este artículo