Поиск и замена строк по всей базе данных

После эксплойта на сайте ASP.NET клиент остался с определенной строкой вредоносного кода, разбросанной по всей базе данных, нескольким столбцам нескольких таблиц. Предварительно добавленная строка является последовательной и не изменяется от таблицы к таблице, поэтому теоретически, если бы я мог просто выполнить поиск и замену по всей базе данных, это можно было бы устранить за одну операцию.

Я мог бы сделать это довольно легко в PostgreSQL или MySQL, сделав что-то вроде этого:

mysqldump bad_db | sed 's/evilcode//g' | mysql fixed_db

Но как бы вы поступили с SQLServer? Я не уверен, что под Windows все так просто.

1 ответ

Проблема, с которой вы столкнетесь, состоит в том, что файл резервной копии базы данных является двоичным, а не простым текстом, как дамп MySQL. Вот ссылка на сообщение в блоге, которое я написал некоторое время назад, в котором будут очищены поля varchar и nvarchar. Там нет кода для текста и ntext, но это, вероятно, очистит большую часть. Текст и Ntext сложнее, так как вы не можете использовать такие вещи, как подстрока на них.

Другие вопросы по тегам