Únikové postavy

Escapující znaky  - nahrazení řídicích znaků v textu odpovídajícími náhradami textu. Jeden z typů řídicích sekvencí .

Definice

Programovací jazyky, rozhraní textových příkazů, textové značkovací jazyky ( HTML , TeX , wiki markup) se obvykle zabývají strukturovaným textem, ve kterém se některé znaky (a jejich kombinace) používají jako ovládací prvky , včetně těch, které řídí strukturu textu. . V situaci, kdy je nutné takový znak použít jako „běžný jazykový znak“, se používá escapování .

Obvykle lze screening rozdělit do tří typů:

Nedostatek stínění jako příčina zranitelnosti

Escapování znaků je zvláště důležité při automatickém generování strukturovaného textu. Zahrnutí libovolných řetězcových dat do textu znamená povinné escapování řídicích znaků v nich. Skutečné řetězce přitom velmi často takové znaky neobsahují, což umožňuje programátorovi tuto operaci zcela vynechat a získat jednodušší program, který korektně pracuje s „jakýmikoli rozumnými“ řetězcovými daty. Takto zjednodušený kód má však skrytou zranitelnost , protože třetí strana (autor řetězcových dat) dostane neoprávněnou příležitost ovlivnit strukturu generovaného textu. Chyba zabezpečení se stává závažnou, pokud je vygenerovaný text programem někoho jiného. K takovým problémům jsou tradičně náchylné systémy používající SQL (viz SQL-injection ) a HTML (viz Cross Site Scripting ).

Příklady

Escapování jednoho znaku

Escapování skupiny znaků

Escapování textu s koncovkou

Když je v textu hodně řídicích znaků, bude tam hodně únikových znaků, text ztěžkne. Pro takové případy se používá alternativní způsob escapování – s koncovým textem. V tomto případě budou všechny řídicí znaky pouze znaky (nenesou řídicí funkci) a text končí, když kompilátor detekuje nějakou sekvenci - konečný text.

<![CDATA[<sender>Jan Novák</sender>]]> ;
  • Víceřádkové literály v PHP
$qry = <<< KONEC SELECT id FROM `$aTableName` WHERE `$aFieldName`='$sqFieldValue'; KONEC ;

Viz také