mysql_real_escape_string Экранирует специальные символы в строках для использования в выражениях SQL &reftitle.description; stringmysql_real_escape_string stringunescaped_string resourcelink_identifier Экранирует специальные символы в unescaped_string, принимая во внимание кодировку соединения, таким образом, что результат можно безопасно использовать в SQL-запросе в функци mysql_query. Если вставляются бинарные данные, то к ним так же необходимо применять эту функцию. mysql_real_escape_string вызывает библиотечную функцмю MySQL mysql_real_escape_string, которая добавляет обратную косую черту к следующим символам: \x00, \n, \r, \, ', " and \x1a. Эта функция должна всегда (за несколькими исключениями) использоваться для того, чтобы обезопасить данные, вставляемые в запрос перед отправкой его в MySQL. &reftitle.parameters; unescaped_string Строка, которая должна быть экранирована. &mysql.linkid.description; &reftitle.returnvalues; Возвращает строку, в которой экранированы все необходимые символы, или &false; в случае ошибки. &reftitle.examples; Простой пример использования <function>mysql_real_escape_string</function> ]]> Пример взлома с использованием SQL Injection ]]> Запрос, который будет отправлен в MySQL: Это позволит кому угодно войти в систему без пароля. Лучший вариант составления запроса Применение mysql_real_escape_string к каждой переменной, вставляемой в запрос, предотвращает SQL Injection. Нижеследующий код является наилучшим вариантом составления запросов и не зависит от установки Magic Quotes. ]]> Запрос, составленный таким образом, будет выполнен без ошибок, и взлом с помощью SQL Injection окажется невозможен. &reftitle.notes; Функцию mysql_real_escape_string можно использовать только после того, как установлено соединение с MySQL. В противном случае возникнет ошибка уровня E_WARNING, а функция возвратит &false;. Если link_identifier не указан, используется последнее открытое соединение. Если magic_quotes_gpc включены, то сначала данные следует обработать функцией stripslashes. Если mysql_real_escape_string применяется к данным, которые уже были прослешены, то в результате слеши в данных будут удваиваться. Если не пользоваться этой функцией, то запрос становится уязвимым для взлома с помощью SQL Injection. mysql_real_escape_string не экранирует символы % и _. Эти знаки являются масками групп символов в операторах MySQL LIKE, GRANT или REVOKE. &reftitle.seealso; mysql_client_encoding addslashes stripslashes Директива magic_quotes_gpc Директива magic_quotes_runtime