Undslippende karakterer

Escape-tegn  - udskiftning af kontroltegn i teksten med de tilsvarende teksterstatninger. En af typerne af kontrolsekvenser .

Definition

Normalt beskæftiger programmeringssprog, tekstkommando-grænseflader, tekstmarkeringssprog ( HTML , TeX , wiki-markup) struktureret tekst, hvor nogle tegn (og deres kombinationer) bruges som kontrolelementer , inklusive dem, der styrer strukturen af ​​teksten . I en situation, hvor det er nødvendigt at bruge et sådant tegn som et "almindeligt sprogtegn", bruges escaping .

Konventionelt kan screening opdeles i tre typer:

Manglende afskærmning som årsag til sårbarheden

Tegnescape er særligt problematisk, når struktureret tekst genereres automatisk. Inkludering i teksten af ​​vilkårlige strengdata indebærer obligatorisk escape af kontroltegn i dem. Samtidig indeholder virkelige strenge meget ofte ikke sådanne tegn, hvilket gør det muligt for programmøren at springe denne operation helt over og få et enklere program, der fungerer korrekt med "enhver rimelig" strengdata. En sådan forenklet kode har dog en skjult sårbarhed , fordi en tredjepart (forfatteren af ​​strengdataene) får en uautoriseret mulighed for at påvirke strukturen af ​​den genererede tekst. Sårbarheden bliver alvorlig, hvis den genererede tekst er en andens program. Traditionelt er systemer, der bruger SQL (se SQL-injektion ) og HTML (se Cross Site Scripting ) tilbøjelige til sådanne problemer.

Eksempler

Undslippe et enkelt tegn

Undslippe en gruppe af tegn

Undslippende tekst med en efterfølgende

Når der er mange kontrolkarakterer i teksten, vil der være mange flugtkarakterer, teksten bliver tung. Til sådanne tilfælde anvendes en alternativ escape-metode - med efterfølgende tekst. I dette tilfælde vil alle kontroltegn kun være tegn (bærer ikke en kontrolfunktion), og teksten slutter, når compileren registrerer en sekvens - den endelige tekst.

<![CDATA[<sender>John Smith</sender>]]> ;
  • Multiline literals i PHP
$qry = <<< SLUT SELECT id FROM `$aTableName` WHERE `$aFieldName`='$sqFieldValue'; SLUT ;

Se også