Разрешить пользователям только определенную информацию из базы данных - PullRequest
1 голос
/ 30 марта 2011

У меня есть база данных для 100 или около того пользователей.У меня есть 2 пользователя MySQL, у которых есть разрешение на базу данных.root, а также конкретный пользователь базы данных "каталог".Пользовательский «каталог» имеет разрешение только на выполнение инструкций SELECT, ничего больше.

Некоторая информация чувствительна к этому пользователю, и я использую PHP в качестве прокси-сервера, чтобы определить, каким пользователем он является до запуска любых команд SQLКак добавить каждый оператор SELECT для включения WHERE id = '$their_id', где $their_id - это переменная php со своим идентификатором.

Обратите внимание, что пользователи будут иметь возможность писать свои команды PHP mysql, я определяю эти ограниченияв db.php, который будет включать информацию о соединении.

Я хочу запретить пользователю joe иметь возможность запускать такие команды, как SELECT * WHERE id = 'bob', когда joe не bob.


Редактировать:

В настоящее время я не сканирую ни одну из команд MySQL, я просто создаю для них соединение в db.php.Могу ли я в любом случае создать свои собственные прокси-команды MySQL и заставить их использовать их, чтобы они могли использовать мою команду mysql_query, а не стандартную mysql_query для переопределения любой обработки, которую я выполняю.

Ответы [ 2 ]

1 голос
/ 30 марта 2011

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

Create View tablenametheyuse as select * from realtable with id = 'user'

и предоставьте этому пользователю только права на его просмотр.

Теперь они кодируют свои операторы выбора любым удобным для них способом.

0 голосов
/ 30 марта 2011

Это не кажется очень безопасным, но я бы просто проверил каждую запись, чтобы увидеть, есть ли в ней слово «id». Затем проверьте, что он равен, если это не их идентификатор пользователя, не выполняйте команду.

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