当前位置:首页 > 问答 > 正文

Dede数据库权限那些事儿,怎么管才能不出大问题保障数据安全

主要综合自织梦官方论坛的历史安全公告、多位资深站长的经验分享文章,以及网络安全社区关于CMS权限管理的普遍性讨论)

说到DedeCMS这个老牌建站系统,很多站长是又爱又恨,爱的是它上手快、模板多,恨的是它隔三差五爆出安全漏洞,动不动就被挂马、被拖库,其实啊,很多问题追根溯源,都出在数据库权限管理太随意上,今天咱们就不聊那些高深的代码,专门掰扯掰扯数据库权限这点事儿,怎么管才能把风险降到最低。

第一件大事:别让DedeCMS在数据库里“称王称霸”

Dede数据库权限那些事儿,怎么管才能不出大问题保障数据安全

这是最核心、也是最容易犯错的一点,很多站长图省事,在安装Dede的时候,直接用了数据库的root超级管理员账号,这就好比把你家大门、保险柜、所有房间的钥匙都交给了保姆,虽然方便她打扫卫生,但她要是想搬空你家或者配一把备用钥匙,你也完全没办法。

正确的做法是(根据多位站长在A5站长网和站长之家的分享):专门为DedeCMS创建一个独立的数据库用户账号,这个账号的权限要遵循“最小权限原则”。

  • 只给一个库的权限:这个账号只能操作DedeCMS使用的那个特定的数据库,绝对不能有管理其他数据库甚至整个数据库服务器的权限。
  • 只给必要的操作权限:通常只授予SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)这四项基本权限,除非有特殊插件需求,否则坚决不给CREATE(创建表)、DROP(删除表)、ALTER(修改表结构)、FILE(文件读写)这类高危权限。
  • 尤其警惕FILE权限:在一些老版MySQL中,拥有FILE权限的数据库用户可以利用某些漏洞在服务器上写入Webshell,这是黑客拿到服务器控制权的常用跳板,DedeCMS的正常运行根本不需要这个权限,必须杜绝。

第二件大事:管好数据库配置文件,别让“钥匙”挂在门口

Dede数据库权限那些事儿,怎么管才能不出大问题保障数据安全

DedeCMS的连接信息,包括数据库地址、用户名、密码,都存放在一个叫data/common.inc.php文件里,这个文件就是通往你数据库的“钥匙”,但很多站长的网站目录权限设置不当,导致这个文件可以被直接从网上访问到,黑客通过扫描工具,能轻易下载这个文件,然后你的数据库就大门敞开了。

怎么管?(此方法在Dede官方早期安全建议和无数“血泪教训”帖中反复被强调)

  1. 最有效的一招:把data目录搬到Web目录之外,所谓Web目录,就是通常放网页文件的wwwroothtdocs文件夹,如果把data目录移到这里面,Apache或Nginx等Web服务器就无法直接访问到它了,自然也就无法下载,移走之后,记得修改Dede系统配置文件include/common.inc.php中引用data/common.inc.php的路径。
  2. 如果实在不能移动,就要加强文件权限,将data/common.inc.php的文件权限设置为644或更严格的444(只读),并且确保该文件的所属用户是Web服务器运行用户,避免被其他用户修改。
  3. 定期检查:时不时地用浏览器尝试访问一下你的域名/data/common.inc.php,如果页面上显示的是乱码或直接下载对话框,那还算安全;如果直接显示出了你的数据库账号密码,那就相当于把钥匙插在门上,必须立刻按上述方法处理。

第三件大事:后台管理权限和数据库操作要分开看

Dede数据库权限那些事儿,怎么管才能不出大问题保障数据安全

DedeCMS本身有强大的后台管理功能,管理员在后台可以进行数据备份、恢复、执行SQL命令等操作,这里又有一个误区:以为管好了后台登录密码就万事大吉。

  • 后台的“超级管理员”权限过大:一旦黑客通过漏洞或者弱口令进入了后台,他就可以利用后台的数据管理工具直接对数据库进行任意操作,包括执行危险的SQL语句,这时候,前面设置的数据库用户权限限制可能就形同虚设了,因为后台功能是以该数据库用户的身份执行这些操作的。
  • 必须加固后台:使用高强度密码、定期更换、限制后台登录IP地址(如果条件允许)、及时安装官方发布的安全补丁,目的就是绝不能让无关人员进入后台。

第四件大事:养成好习惯,定期备份是“后悔药”

权限管理是预防,但世上没有绝对的安全,万一真的出了事,比如数据被误删、被加密勒索,最后的救命稻草就是备份。

  • 备份不能只靠Dede后台:因为如果网站被入侵,黑客很可能首先破坏或删除你网站空间里的备份文件。
  • 要实现异地备份:定期将数据库导出为SQL文件,然后通过FTP、网盘或者其他方式,下载到本地电脑或者另一个安全的服务器上,这样即使主站全军覆没,你手里还有一份干净的“底牌”。

管好Dede数据库权限,核心思想就是“限制”和“隔离”:限制数据库账号的权力,把它关在最小的笼子里;隔离关键配置文件,不让外人碰到;同时加固后台,并准备好备份这条后路,这些事做起来并不复杂,但只要能坚持做到,你的Dede网站安全性就能提升好几个等级,大大减少出大问题的概率。