发新话题
打印

经验谈之MySQL安全问题的一点心得

经验谈之MySQL安全问题的一点心得


前两天在帮朋友整理他的主页空间时候,发现的一点关于SQL/Index.html">MySQL可能大家都会忽略的问题:我们知道,在安装完SQL/Index.html">MySQL后,它会自动创建一个root用户和一个匿名用户,其初始密码都是空,对于前者,很多参考资料上都会提醒大家要注意及时设定一个密码,而忽略了后者,大概是因为后者默认设定为只能在本机使用的缘故吧。   : J; Z) F: k  h, ?5 Z
  但如果你的SQL/Index.html">MySQL是要提供给Web服务器作数据库服务的,忽略这个匿名用户的代价可能相当惨重,因为在默认设置下,这个匿名用户在localhost上几乎拥有和root一样的权限,这时候,如果你的客户拥有上传脚本文件、脚本文件可以进行SQL/Index.html">MySQL数据库操作(比如允许操作SQL/Index.html">MySQL的php)的权限已经可能将你的SQL/Index.html">MySQL改动得面目全非了:   , X0 A+ a6 H+ B- O0 _; V# q! Q
  我今天帮朋友整理他的主页空间的时候,试着写了一个很简单的执行sql语句的php文件上传上去,其中连接字中的user,password我都试着置空,host=localhost,结果发现我的sql语句可以执行,于是执行select * from SQL/Index.html">MySQL.user察看用户权限,发现这个用户在localhost权限非常高,连grant_priv都有,(察看的时候,会发现在root用户下有两行用户名、密码为空的,但各项权限有y 的,就是这个匿名用户本地、远程权限设置了)   
7 j9 a2 ~8 E) w* J( W; e  所以我试着用这个php页面创建一个新用户,并grant给他较高的权限,结果一举成功,这样我就可以用这个新用户通过我本机的SQL/Index.html">MySQL client连接到这个网站的SQL/Index.html">MySQL server,并用这个新建立的用户的管理权限对这个网站的SQL/Index.html">MySQL server进行管理,看到自己可以进行这样轻易获得深入的数据库操作,我怎么还敢把朋友的主页空间的敏感资料放入这个SQL/Index.html">MySQL server呢?! [0 V. ?- G( A# z4 A" d) p" z

' Z1 o) E% [/ O/ S- W' q6 ]   
+ W0 _6 @, K, R3 \8 v/ \  改进建议:   1 V" U, y% B% H6 u+ K/ {2 j
  1、在安装完成SQL/Index.html">MySQL 后,不仅改变root用户的的密码,也同时改变匿名用户的密码,方法类似改变root的密码的方式:   
4 {: p6 L2 Y$ U% G  SQL/Index.html">MySQL> UPDATE user set password=PASSWORD(&;acute;yournewpassword&;acute;) where user=&;acute;&;acute;;
  e2 [, a# \! Z' |# |( v  SQL/Index.html">MySQL>FLUSH PRIVILEGES;   
1 C! g- ^) `4 G2 W$ K  2、如非必要,删除这个匿名用户,这样所有人要使用SQL/Index.html">MySQL 都必须提供用户名,即便日后出了问题,也容易查找问题的源头。   8 d/ M+ R3 i1 c. Q! @
  3、除了root用户外,其他用户包括匿名用户(如果没有删除这个用户)不应该拥有grant权限,防止管理权限不受控制的扩散出去。  . i1 {8 |5 a/ ^% D5 Z5 E
  4、赋予用户updatedeletealertcreatedrop权限的时候,应该限定到特定的数据库,尤其要避免普通客户拥有对SQL/Index.html">MySQL数据库做操作的权限,否则你的系统设置很可能被替换掉。     Z0 S" J# P: ~5 G/ k; y  J
  5、检查SQL/Index.html">MySQL.user表,取消不必要用户的shutdown_priv,reload_priv,process_priv和File_priv权限,这些权限可能泄漏更多的服务器信息包括非SQL/Index.html">MySQL的其它信息出去。   , e- q" \% s! i; f: K
  6、如果不打算让你的用户使用SQL/Index.html">MySQL数据库,在提供诸如php这样的脚本语言的时候,重新设置或编译你的php,取消它们对SQL/Index.html">MySQL的默认支持。



点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹

TOP

发新话题