2013-05-07 2 views
0

Я никогда не задавал вопрос раньше, потому что я всегда всегда находил то, что мне нужно, либо здесь, либо в nixcraft.Как дезинфицировать запрошенные пользователем запросы mysql

Я надеялся на небольшое руководство относительно приложения, которое будет потребляться только техническими людьми в моей организации. Они должны иметь возможность запрашивать базу данных, но из-за чувствительного характера информации мы не хотим, чтобы они могли экспортировать дамп данных. Я уверен, что есть другие риски, за которые следует следить, но я действительно не уверен, какими могут быть эти риски. Единственная дезинфекция, о которой я могу думать, это проверить наличие синтаксических проблем sql и предотвратить какой-либо оператор, который приведет к дампу данных.

Сценарий будет написан на PHP без какой-либо внешней библиотеки. Разрешения базы данных будут ограничены SELECT, поэтому обновление, вставка, удаление и т. Д. Не будет. Мы не сможем использовать подготовленные заявления PDO, потому что наши пользователи будут вводить весь SQL-запрос от начала до конца.

Любые мысли, которые могут возникнуть, были бы весьма признательны.

+0

Я думаю, вам нужен repotico или мой администратор, как инструменты ... :) вам не нужно перестраивать новое приложение –

+0

Что именно вы имеете в виду при экспорте дампа данных? «ВЫБРАТЬ ... ВХОД ...»? – Gumbo

+0

Спасибо за отзыв Арун. Да SELECT ... INTO OUTFILE или запрос, который может возвращать аналогичный вывод. –

ответ

0

Если вы разрешаете пользователям вводить целые запросы только SELECT, этого не делают. Это будет кошмар безопасности.

Вместо этого, PDO готовит и разрешает пользователям выполнять расширенный поиск; в противном случае потребовался бы уровень санитарии ИИ, и если бы вы это делали, вы бы не задавали этот вопрос.

Вместо этого спросите себя, какая логика вам нужна для поиска записей. Вам нужно найти несколько полей? Если вам нужны соединения, вы можете неявно (и автоматически) объединять таблицы вместе при извлечении записей.
Вы также можете использовать параметры для LIMIT, пагинацией и всех вещей в форме


Основной момент заключается в следующем: если пользователь может написать запрос SQL, вы могли бы также просто дайте им логин на консоль SQL и проигнорируйте все дезинфекции. Санитарный ввод, когда пользователь пишет собственный запрос, будет довольно странным и может привести к тому, что запрос не будет запущен.

+1

После дополнительных разъяснений от других команд ясно, что единственное, что мне нужно для защиты, - это дампы данных, которые, я думаю, я могу обрабатывать через MySQL с разрешениями FILE. Спасибо за помощь. –

0

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

Предполагается, что вы публикуете только форму с полями, в которые вы хотите их искать, а не то, что позволяет им вводить полный запрос.

НТН

 Смежные вопросы

  • Нет связанных вопросов^_^