З подальших досліджень я виявив:
http://dev.mysql.com/doc/refman/5.1/en/news-5-1-11.html
Виправлення безпеки:
У багатобайтовій обробці кодування виявлено дірку безпеки введення SQL. Помилка була на сервері, неправильно проаналізований рядок, який уникнув за допомогою функції API API mysql_real_escape_string ().
Цю вразливість виявили і повідомили Джош Беркус і Том Лейн в рамках співпраці між проектами в галузі безпеки консорціуму OSDB. Для отримання додаткової інформації про введення SQL див. Наступний текст.
Обговорення. У багатобайтовій обробці кодування виявлено дірку безпеки введення SQL. Дірка безпеки введення SQL може включати ситуацію, коли, коли користувач надає дані, які потрібно вставити в базу даних, користувач може вводити оператори SQL у дані, які виконуватиме сервер. Що стосується цієї вразливості, то, коли використовується екранування невідомого набору символів (наприклад, додавання косих знаків () у PHP), можна обійти екранування в деяких багатобайтових наборах символів (наприклад, SJIS, BIG5 та GBK). Як результат, така функція, як addlashes (), не може запобігти атакам SQL-ін'єкції. Це неможливо виправити на стороні сервера. Найкращим рішенням є те, щоб додатки використовували функцію екранування екрану з урахуванням набору символів, запропоновану функцією mysql_real_escape_string ().
Однак була виявлена помилка в тому, як сервер MySQL аналізує вихідні дані mysql_real_escape_string (). Як результат, навіть коли була використана функція mysql_real_escape_string () із набором символів, можливо було введення SQL. Ця помилка виправлена.
Обхідні шляхи. Якщо ви не можете оновити MySQL до версії, яка включає виправлення помилки в синтаксичному аналізі mysql_real_escape_string (), але запустите MySQL 5.0.1 або новішої версії, ви можете використовувати режим SQL NO_BACKSLASH_ESCAPES як вирішення проблеми. (Цей режим було введено в MySQL 5.0.1.) NO_BACKSLASH_ESCAPES включає стандартний режим сумісності SQL, де зворотна коса риса не вважається спеціальним символом. Результатом буде те, що запити будуть невдалими.
Щоб встановити цей режим для поточного з'єднання, введіть наступний оператор SQL:
SET sql_mode='NO_BACKSLASH_ESCAPES';
Ви також можете встановити режим глобально для всіх клієнтів:
SET GLOBAL sql_mode='NO_BACKSLASH_ESCAPES';
Цей режим SQL також можна ввімкнути автоматично, коли сервер запускається, використовуючи параметр командного рядка --sql-mode = NO_BACKSLASH_ESCAPES або встановивши sql-mode = NO_BACKSLASH_ESCAPES у файлі параметрів сервера (наприклад, my.cnf або my.ini , залежно від вашої системи). (Помилка # 8378, CVE-2006-2753)
Див. Також помилку №8303.