在整个数据库中进行字符串搜索和替换

在整个数据库中进行字符串搜索和替换

在 ASP.NET 网站上发生漏洞后,客户端会收到一串特定的恶意软件代码,这些代码会散布在整个数据库、多个表的多个列中。附加的字符串是一致的,不会因表而异,因此从理论上讲,如果我可以在整个数据库中进行搜索和替换,那么只需一次操作就可以清除它。

我可以在 PostgreSQL 或 MySQL 中相当轻松地完成此操作,如下所示:

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

但是如何使用 SQLServer 来实现这样的功能呢?我不确定在 Windows 下是否真的如此简单。

答案1

您将遇到的问题是数据库备份文件是二进制文件,而不是像 MySQL 转储那样的纯文本。以下是关联我之前写的一篇博客文章将清理 varchar 和 nvarchar 字段。它没有针对 text 和 ntext 的代码,但这可能会清理大部分内容。Text 和 Ntext 更难,因为您不能对它们使用诸如子字符串之类的东西。

相关内容