MYSQL限制用户访问information_schema

时间:2014-02-13 13:26:21

标签: php mysql

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

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

请指导我......提前致谢

2 个答案:

答案 0 :(得分:17)

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

所以你的问题没什么意义。如果有人会破坏某些用户并使用它的权限获得系统控制权,他将能够按照定义访问该用户的INFORMATION_SCHEMA(因为该用户可以访问其权限所允许的任何内容 - {{1用户权限的“投影”。

答案 1 :(得分:-1)

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

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

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