У меня есть сервер MySQL (версия сервера: 5.1.68-community; версия клиента MySQL: 5.0.51a). Есть ли способ ограничить ВСЕ доступ к информационным_схемам для всех пользователей?
Что происходит, так это то, что некоторые сайты клиентов часто взломаются с помощью SQL Injection, и они могут получить структуру базы данных из таблицы / представления information_schema. Разумеется, нам нужно изменить коды PHP, чтобы предотвратить SQL Injection, но все же я хотел бы ограничить доступ к серверу information_schema.
Пожалуйста, помогите мне … спасибо заранее
INFORMATION_SCHEMA
– это виртуальная база данных, которая содержит метаинформацию обо всех базах данных, доступных для текущего пользователя. Т.е. он динамически строится в соответствии с разрешениями пользователя. Это не настоящая база данных. Вы не должны пытаться изменять разрешения для него в любом случае – он динамически обновляется в соответствии с состоянием сервера.
Таким образом, ваш вопрос имеет мало смысла. Если кто-то будет компрометировать некоторых пользователей и получить системный контроль с его разрешениями, он сможет получить доступ к INFORMATION_SCHEMA
для этого пользователя по определению (так как этот пользователь может получить доступ к любой вещи, которая разрешена его разрешениями – INFORMATION_SCHEMA
– это «проекция» разрешения пользователя).
Нельзя предотвратить доступ к информации (пока), но в случае SQL-инъекций через GET-запрос легко выполнить:
RewriteCond %{REQUEST_FILENAME} !handle_error\.php RewriteCond %{QUERY_STRING} information_schema RewriteRule ^(.*?) /handle_error.php [R=301,L]
в вашем .htaccess, и это должно спасти одну головную боль.