2014-09-11 2 views
0

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

Теперь я хочу убедиться, что пользователи не могут использовать другие запросы типа: INSERT, DROP, ALTER, UPDATE, RENAME и все остальные, которые могут редактировать таблицы в базе данных.

Я не нашел хороших примеров. (или не удалось найти правильный вариант)

Каков наилучший способ для этого?

+0

Рассматривали ли вы поиск слов «вставить»/«падение»/«изменить» и т. Д., И если они найдены, то просто сообщение об ошибке? –

+2

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

+0

Возможно, вы создали форму с параметрами, и когда форма будет отправлена, она создаст запрос и выполнит его. Больше не беспокойтесь. – machineaddict

ответ

0

Вы можете использовать GRANT при использовании MySQL и ограничить dbuser для DML. Я не знаю точного Синтаксиса для этого. Или вы также можете подтвердить запрос на regex или stripos

2

Создайте нового пользователя для этой цели. Этот пользователь должен иметь только SELECT доступ к базе данных.

GRANT SELECT ON database_name.* TO 'someuser'@'somehost'; 

Используя этот метод, вы не должны возиться с регулярными выражениями-х (если вы не хотите, на сторону клиента проверки), и даже если ваша проверка не пройдена, сама база данных будут обрабатывать разрешения соответствующим образом.

Ваша форма должна использоваться someuser для подключения и выполнения запроса, а не для пользователя, используемого для остальной части вашего приложения.

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