Mysql入门系列:安全网络访问mysql数据库服务器
2006-12-31 10:52:34 来源:WEB开发网不要对mysql数据库授权。该数据库连接授权表,在该数据库上具有权限的用户可以修改这些表来获得任何其他数据库的权限。允许用户修改mysql数据库表的授权还能给该用户授予一个全局GRANT 权限。如果该用户可直接修改表,就相当于可以发布任何的GRANT
语句。
FILE 特权相当危险,不要轻易授权。以下是一个FILE 特权用户的例子:
CREATE TABLE etc_passwd(pwd_entry TEXT);
LOAD DATA INFILE "/etc/passwd" INTO TABLE etc_passwd;
SELECT * FROM etc_passwd;
发布这些语句后,该用户拥有您的口令文件的内容。事实上,在服务器中,任何公用的可读文件的内容都可以通过网络由任何有FILE 权限的用户访问。
FILE 权限也可以用来对系统中的、不能用足够的限制文件许可权来建立的数据库进行折衷。这就是为什么应该将数据目录的内容设置成为只能由服务器可读的原因。如果与数据库表相对应的文件是全球范围内可读的,则不仅有该服务器主机账号的用户可读取它们,而且有FILE 权限的任何客户机也都可通过网络连接并读取它们!下面的过程说明如何进行此项操作:
创建有LONGBLOB 列的表:
USE test
CREATE TABLE tmp (b LONGBLOB)
用此表读取您要窃取的表的每个文件的内容,然后将该表的内容写到您自己的数据库文件中:
现在,您有了一个新表y,它包含other_db.x 的内容,您可以对它进行完全访问。
为了避免某人用同样的方式攻击您,应根据“内部安全性:安全数据目录访问”的指导设置数据目录的许可权。当启动服务器以限制用户利用SHOW DATABASE 和S H O W TABLE S对他们不能访问的数据库进行访问时,还可使用-skip-show-database 选项。这将有助于防止用户查找不应访问的数据库和表。
更多精彩
赞助商链接