網站運營
上海(上海網務網絡)
Tel︰021-60498179
Fax︰021-34681226
QQ︰29011218
建站經驗 首頁 / 網站運營 / 建站經驗
批量刪除sql中被注入的惡意代碼
發布時間︰2009-05-06 13:59:24 瀏覽率︰【字體︰ 打印 DOC
收藏到︰

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'?'

(這個是我網上搜索的,據說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,以便幫助不懂安全的菜鳥臨時解決問題。

需求留言
您的姓名︰

您的電話︰

電子郵箱︰

標題︰

描述︰