mysql_real_escape_stringЭкранирует специальные символы в строках для использования в выражениях SQL
&mysql.alternative.note;
mysqli_real_escape_stringPDO::quote
&reftitle.description;
stringmysql_real_escape_stringstringunescaped_stringresourcelink_identifierNULL
Экранирует специальные символы в unescaped_string,
принимая во внимание кодировку соединения, таким образом, что результат
можно безопасно использовать в SQL-запросе в функции mysql_query.
Если вставляются бинарные данные, то к ним так же необходимо применять эту функцию.
mysql_real_escape_string вызывает библиотечную функцию MySQL
mysql_real_escape_string, которая добавляет обратную косую черту к следующим символам:
\x00, \n, \r, \,
', " и \x1a.
Эта функция должна всегда (за несколькими исключениями) использоваться для того,
чтобы обезопасить данные, вставляемые в запрос перед отправкой его в MySQL.
Безопасность: кодировка символов по умолчанию
Кодировка символов должна устанавливаться как на сервере, так и с помощью функции
mysql_set_charset, чтобы влиять на поведение
mysql_real_escape_string. Подробнее описано в разделе кодировка символов.
&reftitle.parameters;
unescaped_string
Экранируемая строка.
&mysql.linkid.description;
&reftitle.returnvalues;
Возвращает строку, в которой экранированы все необходимые символы,
или &false; в случае ошибки.
&reftitle.errors;
Запуск этой функции без существующего соединения с MySQL вызовет ошибку уровня
E_WARNING. Данную функцию можно запускать только если есть
соединение с MySQL.
&reftitle.examples;
Простой пример использования mysql_real_escape_string
]]>
Пример использования mysql_real_escape_string без наличия
соединения
Этот пример показывает, что произойдёт, если вызвать эту функцию без наличия
соединения с MySQL.
]]>
&example.outputs.similar;
Пример взлома с использованием SQL-инъекции
]]>
Запрос, который будет отправлен в MySQL:
Это позволит кому угодно войти в систему без пароля.
&reftitle.notes;
Функцию mysql_real_escape_string можно использовать
только после того, как установлено соединение с MySQL. В противном
случае возникнет ошибка уровня E_WARNING, а функция
возвратит &false;. Если link_identifier не указан,
используется последнее открытое соединение.
Если magic_quotes_gpc включены,
то сначала данные следует обработать функцией stripslashes.
Если данную функцию применить к уже проэкранированным данным,
то данные будут проэкранированы дважды.
Если не пользоваться этой функцией, то запрос становится уязвимым для
взлома с помощью SQL-инъекций.
mysql_real_escape_string не экранирует символы
% и _. Эти знаки являются масками
групп символов в операторах MySQL LIKE,
GRANT и REVOKE.
&reftitle.seealso;
mysql_set_charsetmysql_client_encodingaddslashesstripslashesДиректива magic_quotes_gpcДиректива magic_quotes_runtime