计算机三级:批量删除sql中被注入的恶意代码计算机等级考试
文章作者 100test 发表时间 2009:05:07 17:48:00
来源 100Test.Com百考试题网
2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
1,如果你的数据表很少的话,那么写几条简单的sql就搞定了
对于表中的nvchar类型的字段:
以下为引用的内容:
0update news set title=replace(title, 【恶意代码】 , )
对于表中的text类型的字段:
以下为引用的内容:
0update news set content=Replace(Cast(content as varchar(8000)), 【恶意代码】 , )
2,如果你是sql2000的话,可以用下面这个。
以下为引用的内容:
DECLARE @fieldtype sysname
SET @fieldtype= varchar
--删除处理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N 0update QUOTENAME(o.name)
N set QUOTENAME(c.name) N = replace( QUOTENAME(c.name) , 【恶意代码】 , )
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id
AND OBJECTPROPERTY(o.id,N IsUserTable )=1
AND c.xusertype=t.xusertype
AND t.name=@fieldtype
EXEC sp_MSforeach_Worker @command1=N ?
(这个是网上搜索的,据说sql2000下可以,但我没试过,在sql2005下无法执行。)
3,sql2005下我选择的方法是先生成清理代码的语句,然后把运行结果复制到查询分析器里执行之,当然在sql2000下一样可以用。
以下为引用的内容:
0select
0update [ s.name ] set [ c.name ]= replace([ c.name ], 【恶意代码】 , )
from sysobjects s,syscolumns c,systypes t
where s.type= u and s.id=c.id
AND OBJECTPROPERTY(s.id,N IsUserTable )=1
AND c.xusertype=t.xusertype
AND t.name IN( varchar , nvarchar , char , nchar )
union
0select
0update [ s.name ] set [ c.name ]= replace(Cast([ c.name ] as varchar(8000)), 【恶意代码】 , )
from sysobjects s,syscolumns c,systypes t
where s.type= u and s.id=c.id
AND OBJECTPROPERTY(s.id,N IsUserTable )=1
AND c.xusertype=t.xusertype
AND t.name IN( text , ntext )
ps:以上是buzhizhe在处理问题时候整理的,方法1、2是网上搜索的,对于我的sql2005无用,因此写了方法3,以便帮助不懂安全的菜鸟临时解决问题。
特别推荐:
2009年9月全国计算机等级考试时间及科目预告