Мне передали базу данных MS SQL 2000, в которую было введено вредоносное ПО.
Вредоносный скрипт выглядит следующим образом:
<script src=http://www.someAddress.ru/aScript.js></script>
Теперь я хочу удалить этот кусок кода из строк таблицы.
В качестве теста я ввел Test в строку и успешно выполнил следующий запрос:
UPDATE myTable
SET description = REPLACE (description, '<h1>','')
WHERE id = 2;
Это убрало тег h1.
Но попытка сделать то же самое с тегом script не работает:
UPDATE myTable
set description = REPLACE (description, '<script src=http://www.someAddress.ru/aScript.js></script>','')
WHERE id = 2
Почему это не работает?
ОБНОВЛЕНИЕ 2
WOHO! Я нашел решение!
Я использую следующий код, который нашел здесь: 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. Поэтому, если я хочу удалить только , я просто заменяю «<» на «<script». </p>