现在的位置: 首页 > 综合 > 正文

清除被注入的js代码

2012年06月29日 ⁄ 综合 ⁄ 共 1441字 ⁄ 字号 评论关闭

declare   @delStr   nvarchar(500)  
set   @delStr= '<script src=http://3b3.org/c.js></script>'

set   nocount   on

declare   @tableName   nvarchar(100),@columnName   nvarchar(100),@tbID   int,@iRow   int,@iResult   int  
declare   @sql   nvarchar(500)

set   @iResult=0  
declare   cur   cursor   for  
select   name,id   from   sysobjects   where   xtype= 'U'

open   cur  
fetch   next   from   cur   into   @tableName,@tbID

while   @@fetch_status=0  
begin  
declare   cur1   cursor   for  
                --xtype   in   (231,167,239,175,35)   为char,varchar,nchar,nvarchar,text类型  
                select   name   from   syscolumns   where   xtype   in   (231,167,239,175,35)   and   id=@tbID  
open   cur1  
fetch   next   from   cur1   into   @columnName  
while   @@fetch_status=0  
begin  
            set   @sql= 'update  ['   +   @tableName   +   ']   set   ['+   @columnName   + ']=   replace(cast(['+@columnName+ '] as varchar(8000)), '''+@delStr+ ''', '''')   where   ['+@columnName+ ']   like   ''%'+@delStr+ '%'''  
            exec   sp_executesql   @sql            
            set   @iRow=@@rowcount  
            set   @iResult=@iResult+@iRow  
            if   @iRow> 0  
            begin
print   '表: '+@tableName+ ',列: '+@columnName+ '被更新 '+convert(varchar(10),@iRow)+ '条记录; '  
            end            
            fetch   next   from   cur1   into   @columnName

end  
close   cur1  
deallocate   cur1  

fetch   next   from   cur   into   @tableName,@tbID  
end  
print   '数据库共有 '+convert(varchar(10),@iResult)+ '条记录被更新!!! '

close   cur  
deallocate   cur  
set   nocount   off

抱歉!评论已关闭.