首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 清除資料庫被植入惡意 Script 腳本完整指令碼

     編輯:關於SqlServer

攻擊徵兆

資料表的字串欄位(varchar、nvarchar、text 等)被大量植入惡意 `' -- 要移除的惡意字串 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

指令碼解析

  1. 游標遍歷所有使用者資料表的字串型欄位。
  2. 動態 SQL 執行 REPLACE,將指定惡意字串替換為空值。
  3. 使用 CAST(... AS VARCHAR(8000)) 處理 text/ntext 型別(SQL 2000 限制)。

重要補強措施

  • 參數化查詢:修補應用程式 SQL 注入漏洞,防止再次被植入。
  • 輸入驗證與編碼:前後端雙重過濾,輸出時進行 HTML Encode。
  • 權限最小化:資料庫帳號僅授予必要權限,避免使用 sa。
  • 定期稽核:排程掃描可疑字串模式(如 `
  • 備份驗證:確認備份檔案未被汙染,建立乾淨還原點。

進階版:支援多種惡意模式

-- 使用 TABLE 變數儲存多個惡意模式,迴圈清除
DECLARE @patterns TABLE (bad VARCHAR(500))
INSERT @patterns VALUES (''), ('