Я обнаружил, что некоторый старый (2009) код, написанный для веб-сайта, при определенных обстоятельствах в поисковом запросе сохранял SQL как переменную $ _GET!
Когда поиск был выполнен, детали POSTED и затем очищены, и результаты разбиты на страницы с предложением LIMIT в MySQL. Если существует более одной страницы (то есть +30 результатов), страницы являются ссылками в HTML с помощью GET-переменной, содержащей оператор SQL.
Я знаю, это абсолютно не способ сделать это. Это старый код, я только что видел его случайно. Это должно быть исправлено.
Итак, я исправил, продезинфицировал и использовал альтернативный метод для перезагрузки SQL, НО:
Мой вопрос таков:
На странице выводятся данные, относящиеся к миниатюрным изображениям, все данные выводятся в виде именованного массива var (исходное предложение SELECT *
предложение), поэтому, если кто-то злоупотребляет переменной GET, сама страница выведет только названные столбцы,
Мне удалось УДАЛИТЬ строки из БД с использованием злоупотребления GET, я хотел бы думать, что злоупотребление эффективно только в том случае, если результат не связан с каким-либо возвращаемым выводом (например, УДАЛИТЬ), но я не знаю; поэтому, учитывая, что пользователь может вводить что угодно в предложение GET, но получать только отображаемый вывод того, что закодировано (то есть именованные столбцы в массиве из 30 строк), — какие еще злоупотребления могут быть открыты для этой зияющей дыры?
Дополнительная информация: код MySQLi
Инструмент как SQLMAP вероятно, может взять на себя весь сервер и делать с ним все, что хочет пользователь.
Неанализованный ввод в базу данных больше даже не взламывает, а ждет, пока кто-нибудь запустит скрипт на вашем компьютере и с этого момента станет его владельцем.
Что может сделать злоумышленник, зависит от конфигурации вашей базы данных и доступа пользователей базы данных. Если вы создаете нового пользователя с разрешением только ВЫБРАТЬ эту одну указанную таблицу и используете этого пользователя для этого конкретного сценария, вред, который он может сделать, — это чтение данных из этой таблицы.
Тем не менее, это плохая практика. Никогда не используйте это.