SQL-инъекция, когда включена магическая кавычка

Возможные дубликаты:
Одиночные кавычки экранируются автоматически в PHP? Тогда зачем нужна уборка?
Успешное внедрение SQL несмотря на магические кавычки PHP

Ранее сегодня я спросил об автоматическом экранировании кавычек и узнал о магических кавычках. Поток находится по адресу. Автоматически ли экранируются одинарные кавычки в PHP? Тогда зачем нужна уборка?,

Мы пришли к общему мнению, что магических кавычек недостаточно, и что мы всегда должны проверять и очищать вводимые пользователем данные, а также использовать подготовленные запросы.

Тем не менее, это приводит к этому вопросу, на сервере с включенной магической цитатой, какие SQL-инъекции будут обходить меры безопасности, налагаемые волшебными цитатами? Почему магические кавычки небезопасны?

Чтобы убедить меня в том, что магические кавычки небезопасны, я хотел бы увидеть реальный пример инъекции, которая могла бы обойти эти меры. Я создал тест, настроенный на моем локальном сервере с кодом:

$foo = $_POST['foo'];
$sql = "SELECT * FROM bar WHERE foo='".$foo."'";
$result = query($sql);

где query() - это обычный код, необходимый для выполнения запроса. Нет очистки, что так всегда. Тем не менее, волшебная цитата включена.

Какие-нибудь примеры инъекций, которые обходили бы магические кавычки на этой установке?

Ура,

Erik

1 ответ

Проблема в том, что магические кавычки используют PHP addslashes() функция, которая не поддерживает Unicode (что означает, что многобайтовые символы не экранированы).

Это должно быть все, что вам нужно.

Другие вопросы по тегам