Экранирование символов — замена в тексте управляющих символов на соответствующие текстовые подстановки. Один из видов управляющих последовательностей.
Обычно языки программирования, текстовые командные интерфейсы, языки разметок текста (HTML, TeX, wiki-разметка) имеют дело со структурированным текстом, в котором некоторые символы (и их комбинации) используются в качестве управляющих, в том числе управляющих структурой текста. В ситуации, когда необходимо использовать такой символ в качестве «обычного символа языка», применяют экранирование.
Условно экранирование может быть разделено на три типа:
Экранирование символов привлекает особое внимание, когда структурированный текст генерируется автоматически. Включение в текст произвольных строковых данных предполагает обязательное экранирование в них управляющих символов. В то же время, очень часто реальные строки таких символов не содержат, что позволяет программисту пропускать эту операцию совсем и получать более простую программу, корректно работающую с «любыми разумными» строковыми данными. Однако, такой упрощенный код имеет скрытую уязвимость, потому что стороннее лицо (автор строковых данных) получает несанкционированную возможность влиять на структуру генерируемого текста. Уязвимость становится серьёзной, если созданный текст является чьей-то программой. Традиционно таким проблемам подвержены системы, использующие языки SQL (см. SQL-injection) и HTML (см. Сross Site Scripting).
r"экранируемый текст"
<nowiki>
и </nowiki>
. Если нужно записать сам псевдотег <nowiki>
, это делается символами подстановки (<nowiki>
).Когда в тексте много управляющих символов, будет много знаков экранирования, текст становится тяжеловесным. Для таких случаев используется альтернативный метод экранирования — с завершающим текстом. В таком случае все управляющие символы будут именно символами (не несут управляющей функции), а текст кончается, когда компилятор обнаруживает некоторую последовательность — завершающий текст.
<![CDATA[<sender>John Smith</sender>]]>;
$qry = <<<END
SELECT id
FROM `$aTableName`
WHERE `$aFieldName`='$sqFieldValue';
END;
Этот раздел не завершён. |
Для улучшения этой статьи желательно: |
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .