ADC

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

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

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

    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.

    Tras aplicar la transformación, los operadores adicionales que especifique en la expresión se aplicarán al texto seleccionado. A continuación se presenta un ejemplo:

    http.req.url.query.html_xml_safe. contains (“myQueryString”)

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

    Esta operación protege contra los ataques que dividan las respuestas.

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

  • <text>.HTTP_URL_SAFE: Convierte los caracteres de URL no seguros en valores “%xx”, donde “xx” es una representación hexadecimal del carácter de entrada. Por ejemplo, el signo & se representa como %26 en la codificación segura para URL. La longitud máxima del texto transformado es de 2048 bytes. Se trata de una operación de solo lectura.

    Los siguientes son caracteres seguros para URL. Todos los demás no son seguros:

    • Caracteres alfanuméricos: a-z, A-Z, 0-9
    • Asterisco: “*”
    • Ampersand: “&”
    • Arroba: “@”
    • Dos puntos: “:”
    • Coma: “,”
    • Dólar: “$”
    • Punto:”.”
    • Igual a: “=”
    • Signo de exclamación: “!”
    • Guion: “-“
    • Paréntesis de apertura y cierre: “(“, “)”
    • Porcentaje: “%”
    • Más: “+”
    • Punto y coma: “;”
    • Comilla simple: “’”
    • Barra oblicua: “/”
    • Signo de interrogación: “?”
    • Título: “~”
    • Subrayado: “_”
  • <text>.MARK_SAFE:

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

  • **.SET_TEXT_MODE(URLENCODED NOURLENCODED)**

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

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

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

    En el siguiente ejemplo, NetScaler puede seleccionar hasta 9 bytes del objetivo:

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

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

    Especifica cómo tratar el carácter positivo (+). La opción PLUS_AS_SPACE reemplaza un carácter positivo por un espacio en blanco. Por ejemplo, el texto “hola+mundo” pasa a ser “hola mundo”. La opción NO_PLUS_AS_SPACE deja los caracteres positivos como están.

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

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

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

    • Todas las apariciones de “\XXX” se sustituirán por el carácter “Y” (donde XXX representa un número en el sistema octal e 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, los textos codificados “http\72//” y http\072//” se decodificarán en <http://>, donde los dos puntos (:) son el equivalente en ASCII del valor octal “72”.
    • Todas las apariciones de “\xHH” se sustituirán por el carácter “Y” (HH representa un número en el sistema hexadecimal e Y indica el equivalente ASCII de HH). Por ejemplo, se decodificará el texto codificado “http\x3a//” <http://>, donde los dos puntos (:) son el equivalente en ASCII del valor hexadecimal “3a”.
    • Todas las apariciones de “\uWWxx” se sustituirán por la secuencia de caracteres “YZ” (donde WW y XX representan dos valores hexadecimales distintos e Y y Z representan sus equivalentes en ASCII de WW y XX, respectivamente). Por ejemplo, se decodificarán los textos codificados “http%u3a2f/” y “http%u003a//” <http://>, donde “3a” y “2f” son dos valores hexadecimales y los dos puntos (:)) y la barra diagonal (“/”) representan sus equivalentes en ASCII, respectivamente.
    • Todas las apariciones de “\b”, “\n”, “\t”, “\f” y “\r” se sustituyen por los caracteres ASCII correspondientes.

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

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

    Realiza la acción indefinida asociada si están configurados los modos 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 detecte una codificación incorrecta en el objeto de texto representado por <text>.

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

En este artículo