SqlServer中批量替换被插入的木马记录
最近,某公司一项重要的事业性质网站遭到黑客的攻击。黑客通过SQL注入的方式,将木马病毒注入到数据库之中,严重影响了MSSQL SERVER的数据安全。整个数据库都被恶意脚本所侵蚀,形势十分严峻。
以下是清除木马的SQL语句:
```sql
declare @t varchar(555),@c varchar(555),@inScript varchar(8000);
set @inScript='恶意代码';
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
exec('update ['+@t+'] set ['+@c+']=replace(cast(['+@c+'] as varchar(8000)),'''+@inScript+''','''')' );
fetch next from table_cursor into @t,@c;
end;
close table_cursor;
deallocate table_cursor;
```
为了防止SQL注入再次发生,还需要采取以下措施:
1. 不要使用sa用户连接数据库;
2. 新建一个具有public权限的数据库用户,并使用该用户访问数据库;
3. 移除角色public对sysobjects与syscolumns对象的select访问权限;
4. 在用户属性中,对sysobjects与syscolumns的权限进行限制;
5. 通过以下代码检测权限设置是否得当:
```sql
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;
```
如果以上代码运行失败,则表示权限设置正确;如果代码能够显示出来,则说明权限设置过高,需要进一步加强权限控制。希望大家能够引以为戒,加强网络安全意识,共同维护网络安全。也希望大家能够将此信息分享出去,让更多的人了解并受益。
编程语言
- SqlServer中批量替换被插入的木马记录
- [js]一个只删除所有font标签的正则函数
- 基于JS实现二维码图片固定在右下角某处并跟随滚
- 微信小程序 swiper组件详解及实例代码
- vue项目上传Github预览的实现示例
- Navicat 远程连接 MySQL实现步骤解析
- 使用watch监听路由变化和watch监听对象的实例
- PHP 线程安全与非线程安全版本的区别深入解析
- 在for循环中length值是否需要缓存
- Linux(Ubuntu)下搭建ASP.NET Core环境
- 实例讲解-开发SWING的XML框架(2)
- JS函数定义方式的区别介绍
- Ajax中responseText返回的是一个页面而不是一个值
- 用asp实现批量删除bak文件
- bootstrap table列和表头对不齐的解决方法
- JSP 相关对象的使用介绍