Можете ли вы вставить «вставку» в выражение «выбрать»? - PullRequest
3 голосов
/ 29 марта 2012

Можно ли вставить оператор "вставки" (или что-то еще, что изменяет базу данных) в оператор "выбора" MySQL?

Я спрашиваю, потому что обеспокоен тем, что обнаружил уязвимость внедрения, но он защищен от очевидного беспорядка, такого как '; drop database; --, благодаря возможности запуска только одного оператора за раз, независимо от того, сколько операторов в запросе было повреждено.Но если серверная часть выполняет что-то вроде select bar from foo where param = '$improperly_escaped_input', могу ли я что-то ввести, что поставит под угрозу мою базу данных?

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

1 Ответ

5 голосов
/ 29 марта 2012

Модификация данных - это только один аспект уязвимости Sql Injection.Даже имея только разрешения на чтение, злоумышленник может повысить свои привилегии или использовать атаку Blind Sql Injection , чтобы вычистить каждый последний бит данных из вашей базы данных.

Я не могу вспомнитьдо предела, что данные будут изменены внутри оператора select ... но, вы уверены, что можете выполнять только одну команду за раз ?

Независимо от этого, другим векторам атаки должно быть достаточно угрозы, чтобы повысить приоритет проблемы.

РЕДАКТИРОВАТЬ: Изменение данных разрешено в подзапросах MySql :

MySQL позволяет подзапросу ссылаться на хранимую функцию, которая имеет побочные эффекты, модифицирующие данные, такие как вставка строк в таблицу.Например, если f () вставляет строки, следующий запрос может изменить данные:

SELECT ... WHERE x IN (SELECT f() ...);

Это поведение нестандартное (не разрешено стандартом SQL).В MySQL он может давать неопределенные результаты, потому что f () может выполняться разное количество раз для разных выполнений данного запроса в зависимости от того, как оптимизатор решит его обработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...