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