MYSQL 限制用户对information_schema的访问

2022-08-31 00:48:36

我有一个MySQL服务器(服务器版本:5.1.68-社区;MySQL客户端版本:5.0.51a)。有没有办法限制所有用户对information_schema的所有访问?

发生的事情是,一些客户站点经常通过SQL注入被黑客入侵,他们可以从information_schema表/视图中获取数据库结构。当然,我们需要更改PHP代码以防止SQL注入,但我仍然希望将访问限制为information_schema服务器范围。

请指导我...提前致谢


答案 1

INFORMATION_SCHEMA是一个虚拟数据库,其中包含有关当前用户可访问的所有数据库的元信息。即,它是根据用户的权限动态构建的。它不是真正的数据库。在任何情况下都不应尝试更改其权限 - 它会根据服务器的状态动态更新。

所以你的问题没有什么意义。如果有人会损害某些用户并以其权限获得系统控制权,则他将能够根据定义为该用户访问(因为该用户可以访问其权限允许的任何内容 - 是用户权限的“投影”)。INFORMATION_SCHEMAINFORMATION_SCHEMA


答案 2

人们无法阻止对information_schema访问(尚未),但是在通过GET Request进行sql注入的情况下,很容易做到:

RewriteCond %{REQUEST_FILENAME}   !handle_error\.php
RewriteCond %{QUERY_STRING}   information_schema
RewriteRule  ^(.*?)          /handle_error.php [R=301,L]

在你的.htaccess中,这应该可以节省一些头痛。


推荐