【发布时间】:2009-10-29 16:18:53
【问题描述】:
我收到了一个已注入恶意软件的 MS SQL 2000 数据库。 恶意软件脚本如下:
<script src=http://www.someAddress.ru/aScript.js></script>
现在我想从表格行中删除这段代码。
作为测试,我连续输入Test
,成功运行如下查询:
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
为什么这不起作用?
更新 2
哇!我找到了解决方案!
我正在使用我在这里找到的以下代码: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。因此,如果我只想删除 ,我只需将 '
【问题讨论】:
-
我的第一个想法是换行......
标签: sql sql-server tsql sql-server-2000 sql-update