在管理虚拟服务器期间发现部分数据库上的很多字段都被注入相同或者不同的几种木马代码,我们如何防止,下面设置数据库使之无法批量注入代码。
1) 不要在网站上使用sa用户访问数据库
2) 创建具有public权限的数据库用户,并使用这个用户访问数据库
3) 在网站所使用的数据库的角色中去掉public角色对sysobjects与syscolumns对象的select访问权限,如下图所示
在public角色上右键->属性,打开“数据库角色属性”对话框,如下图所示
在“数据库角色属性”对话框中点击“权限”按纽,打开如下窗口
在打开的对话框中选择“public”角色
在下面的列表中找到sysobjects与syscolumns对象并在select列上打“×”,如下图所示
4) 同样在该数据库的“用户”上用户名称-> 右键-属性-权限-在sysobjects与syscolumns上面打“×”,如下图所示
5) 用我们创建的用户连接查询分析器中并执行以下代码检测(失败表示权限正确,如能显示出来则表明权限太高):
DECLARE @T varchar(255),
@C varchar(255)
DECLARE Table_Cursor CURSOR FOR
Select a.name,b.name from sysobjects a,syscolumns b
where a.id=b.id and a.xtype= 'u ' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)
OPEN Table_Cursor
FETCH NEXT FROM Table_Cursor INTO @T,@C
WHILE(@@FETCH_STATUS=0)
BEGIN print @c
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor
如下图所示,表示我们设置正确
下图是没有设置之前的执行结果
到此我们已经禁止
SQL Server数据库被批量挂马
。