| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Привилегии |
| Автор: Сириус 1.5.2009, 21:37 |
| Здравствуйте. Я хотел бы узнать, имеется ли возможность скрыть таблицы от списка таблиц в information_schema.tables ? То есть я хочу, чтоб некоторые таблицы выводились при запросе select table_name from information_schema.tables , а некоторые оставались невидимыми. Это возможно? Скажем у меня есть сайт, в нем имеются две папки folder1, folder2, я хочу, чтоб в папке folder1 выводился один список таблиц, (в information_schema.tables) а в папке folder2 - другой список таблиц, Вообщем, имеется ли возможность такого контроля ? Мне просто нужно скрыть имена и данные некоторых таблиц (в таблицах tables, columns, ..), даже в случае, если человек будет иметь доступ к базе через sql иньекции к примеру, но я не хочу запрещать доступ к information_schema вообще, я просто хочу скрыть некоторые таблицы. |
| Автор: Gwire 2.5.2009, 02:31 | ||
| То есть ты хочешь, чтобы в таблице TABLE_PRIVILEGES появились записи типа:
Другой вопрос Какими правами обладает этот человек? Если этот человек "GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY '***'" то исли он захочет посмотреть - он посмотрит. Вплоть до удаления этих установок. А если он "GRANT ALL PRIVILEGES ON other_schema.* TO 'user'@'%' IDENTIFIED BY '***'" то он будет видеть только "information_schema" и "other_schema". Драйвер MySQL не будет выбирать для него в "TABLES" или "COLUMNS" не разрешенные схемы. |
| Автор: Сириус 2.5.2009, 03:30 |
| У нас есть таблица information_schema.tables Если сделать запрос вида SELECT table_name FROM information_schema.tables то мы получим список всех существующих таблиц из всех баз. Так вот, мой вопрос очень простой, как можно сделать так, чтобы некоторые таблицы в этом списке не появлялись? То есть, если запрос выдает SELECT table_name FROM information_schema.tables результат: table1 table2 table3 table4 table5 table6 --------- И скажем я хочу скрыть таблицу table2, чтоб если кто-то извне, найдя какую-то багу в моем сайте, выполнит SQL иньекцию с запросом SELECT table_name FROM information_schema.tables чтоб результат ему выдался такой table1 table3 table4 table5 table6 --------- То есть, как можете заметить, таблицы table2 нет в списке. Так вот, это возможно, или нет? |
| Автор: Gwire 13.5.2009, 17:53 |
| Исли ты хочешь скрыть свою базу - убери права у всех пользователей на твою базу. Конечно эта затея очень стрёмная. А если желаемый объект - таблица... Скорее всего такой функции не имеется в MySQL. |
| Автор: zav74 14.5.2009, 23:38 |
| Если глобально скрыть все права, то можно устанавливать права на каждую из таблиц. У меня есть разграничения по базам-то есть в information_schema база появляется только в том случае, если у пользователя есть какие-то привелегии на нее. Думаю, с таблицами тоже самое. http://www.mysql.ru/docs/man/Privileges.html |