SQL中批量删除被注入的恶意代码的方法

树叶云

下文将为您介绍SQL中批量删除被注入的恶意代码的方法,供您参考,如果您也遇到了这样的问题,不妨一看,相信对您会有所帮助。

1,如果你的数据表很少的话,那么写几条简单的sql就搞定了

对于表中的nvchar类型的字段:

以下为引用的内容:
update news set title=replace(title,’【恶意代码】’,”) 

对于表中的text类型的字段:

以下为引用的内容:
update news set content=Replace(Cast(content as varchar(8000)),’【恶意代码】’,”)

2,如果你是sql2000的话,可以用下面这个。

以下为引用的内容:
DECLARE @fieldtype sysname
SET @fieldtype=’varchar’
–删除处理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N’update ‘+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’?’  #p#

(这个是我网上搜索的,据说sql2000下可以,但我没试过,在sql2005下无法执行。)

3,sql2005下我选择的方法是先生成清理代码的语句,然后把运行结果复制到查询分析器里执行之,当然在sql2000下一样可以用。

以下为引用的内容:
select
‘update [‘+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
select
‘update [‘+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,以便帮助不懂安全的菜鸟临时解决问题。

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/226436.html<

(0)
运维的头像运维
上一篇2025-04-17 09:04
下一篇 2025-04-17 09:06

相关推荐

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注