Задать вопрос
eafanasov
@eafanasov

MySQL<5.0 и SQL Injection

В MySQL версии 5.0 и выше появилась схема INFORMATION_SCHEMA.
При проведении атаки типа SQL Injection данные из этой схемы позволяют получить названия таблиц и колонок в других схемах со всеми вытекающими…
Возникает парадокс: web-приложение, использующее более древнюю версию MySQL, лучше защищено от атаки типа SQL Injection.

Насколько верно такое утверждение?
  • Вопрос задан
  • 3471 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Очень часто люди путают само понятие инъекции и эксплуатацию уже совершённой инъекции. Эти два понятия как бы «склеиваются» в голове, но на самом деле между ними практически нет ничего общего:
— атака типа «SQL инъекция» — это принципиальная возможность внедрить свой код в запрос.
— эксплуатация — это уже то, какой конкретно код внедрять.

И здесь сразу становится видно, что вопрос сформулирован некорректно: к атаке INFORMATION_SCHEMA отношения не имеет. А только к эксплуатации. Поэтому и парадокса никакого нет. От инъекций обе версии защищены одинаково — как правильно сказано в ответе выше — настолько, насколько защищено приложение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
calg0n
@calg0n
Утверждение неверно. От атак типа SQL Injection защищать должно веб-приложение, а не сама БД.
Ответ написан
Комментировать
@rozhik
Никто не мешает в самых древних версиях делать show databases; show tables; describe table… Итп.
База в принципе не может защищать от SQL Injections.
Но никто не мешает делать несколько SQL пользователей с разными правами. Хотя как по мне за строительство SQL с помощью конкатенаций нужно вырывать руки (за исключением случаев, где меняется структура самого запроса)
Ответ написан
eafanasov
@eafanasov Автор вопроса
Спасибо всем за ответы.

Позволю себе уточнить: под атакой типа SQL Injection я имел в виду не потенциальную возможность внедрения SQL-кода в запрос, а уже сам факт получения конкретных данных (из конкретного столбца/строки таблицы).
И в этом случае очевидно, что использование INFORMATION_SCHEMA избавляет нас от ручного перебора названий таблиц/столбцов/строк.
Таким образом, наличие этой самой схемы предоставляет возможность с более высокой вероятностью завершить атаку успешно.

Разумеется, я понимаю, что защиту от SQL Injection должно реализовывать web-приложение, а не сама БД. Но мой вопрос как бы не об этом.
Ответ написан
akamajoris
@akamajoris
INFORMATION_SCHEMA не для защиты создавалась, поэтому говорить тут не о чем.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы