資料庫大量文本欄位被注入統一惡意腳本(如 <script src=https://evil.com/x.js></script>),需全庫掃描清理。
DECLARE @t VARCHAR(255), @c VARCHAR(255);
DECLARE table_cursor CURSOR FOR
SELECT a.name, b.name
FROM sysobjects a, syscolumns b, systypes c
WHERE a.id = b.id
AND a.xtype = 'u' -- 用戶表
AND c.name IN ('char', 'nchar', 'nvarchar', 'varchar', 'text', 'ntext')
AND b.xusertype = c.xusertype;
DECLARE @str VARCHAR(500), @str2 VARCHAR(500);
SET @str = ''; -- 目標惡意代碼
SET @str2 = ''; -- 替換為空
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)), ''' + @str + ''', ''' + @str2 + ''')');
FETCH NEXT FROM table_cursor INTO @t, @c;
END
CLOSE table_cursor;
DEALLOCATE table_cursor;
sysobjects(表) + syscolumns(欄位) + systypes(型別) 篩選所有字串型欄位UPDATE ... REPLACE 語句text/ntext 型別不支援直接 REPLACE,需轉換後處理(注意:超過 8000 字元會截斷,SQL 2005+ 建議用 VARCHAR(MAX))''BEGIN TRAN,驗證影響筆數後再 COMMITSELECT INTO 備份受影響表VARCHAR(MAX) 避免截斷;或分塊更新WHERE [col] LIKE '%' + @str + '%' 先過濾,減少無效更新r01.3322.org)做 LIKE 掃描