Personajes que escapan

Caracteres de escape  : reemplazo de caracteres de control en el texto con las sustituciones de texto correspondientes. Uno de los tipos de secuencias de control .

Definición

Por lo general, los lenguajes de programación, las interfaces de comandos de texto, los lenguajes de marcado de texto ( HTML , TeX , wiki markup) tratan con texto estructurado, en el que algunos caracteres (y sus combinaciones) se utilizan como controles , incluidos aquellos que controlan la estructura del texto. . En una situación en la que es necesario usar un carácter como un "carácter de idioma regular", se usa el escape .

Convencionalmente, la detección se puede dividir en tres tipos:

Falta de blindaje como causa de la vulnerabilidad

El carácter de escape es de particular preocupación cuando el texto estructurado se genera automáticamente. La inclusión en el texto de datos de cadena arbitrarios implica el escape obligatorio de los caracteres de control en ellos. Al mismo tiempo, muy a menudo las cadenas reales no contienen dichos caracteres, lo que permite al programador omitir esta operación por completo y obtener un programa más simple que funciona correctamente con "cualquier dato de cadena razonable". Sin embargo, un código tan simplificado tiene una vulnerabilidad oculta , porque un tercero (el autor de los datos de la cadena) tiene la oportunidad no autorizada de influir en la estructura del texto generado. La vulnerabilidad se vuelve grave si el texto generado es el programa de otra persona. Tradicionalmente, los sistemas que utilizan SQL (ver SQL-injection ) y HTML (ver Cross Site Scripting ) son propensos a tales problemas.

Ejemplos

Escapar de un solo carácter

Escapando de un grupo de personajes

Texto de escape con un final

Cuando hay muchos caracteres de control en el texto, habrá muchos caracteres de escape, el texto se vuelve pesado. Para tales casos, se utiliza un método de escape alternativo, con texto final. En este caso, todos los caracteres de control serán solo caracteres (no llevan una función de control), y el texto finaliza cuando el compilador detecta alguna secuencia: el texto final.

<![CDATA[<remitente>John Smith</remitente>]]> ;
  • Literales multilínea en PHP
$qry = <<< FIN SELECCIONE id DESDE `$aTableName` DONDE `$aFieldName`='$sqFieldValue'; FIN ;

Véase también