11.11 数据库管理
数据库管理跟文件管理一样,也是一个高危功能,可以直接操作数据库,对数据库进行备份、执行SQL语句,等等,如果启动数据库服务的系统用户以及数据库用户的权限都够大,那么完全可以利用这个功能直接执行系统命令以及操作服务器上的文件,如图11-22所示。
图 11-22
数据库管理有多个功能形式,比如discuz的数据库管理就是一个备份和优化的功能,其备份功能是可以操作所有表,另外一种是可以直接执行SQL语句进行操作。对于这两种情况下的安全设计,应该注意以下几个点:
1)限制可以操作的数据库表,如果是数据库备份可以直接在代码里面写死只能操作哪些表,如果是执行SQL语句的方式可以另建一个MySQL用户,限制可以操作的表和字段。
2)限制备份到服务器上的文件名,需要系统随机生成类似md5并且长度不能低于16位,扩展名不能自定义,这样做的目的一是防止攻击者利用该功能导出webshell,二是防止被猜解到文件名直接下载。