sql - SQL 注入(inject)后清理的最佳方法是什么?

标签 sql sql-server database security

我的任务是维护一个最近成为 SQL 注入(inject)攻击受害者的非营利网站。有人利用网站上的表单向数据库中每个可用的类似文本的字段(varchar、nvarchar 等)添加文本,当呈现为 HTML 时,这些字段包含并执行 JavaScript 文件。

对该 URL 的 Google 搜索表明它来自罗马尼亚或中国以外的电子邮件垃圾邮件发送者,但这不是现在重要的。

我仔细检查并手动删除了在网站上最可见和最受欢迎的页面上呈现的文本字段中的信息,但我很好奇从其他文本字段中删除文本的最佳编程方式是什么在网站上。

显然还有更多工作要做(加强站点以防止 SQL 注入(inject),使用 markdown 之类的东西而不是存储 HTML 等),我正在研究这些,但目前我真正需要的是一个好方法进入并以编程方式删除注入(inject)的文本。我知道确切的文本是什么,每次都是一样的,而且它总是附加到任何文本字段的末尾。我现在不能删除数据库中的所有 HTML,而且我不知道这到底是什么时候发生的,所以我不能只回滚到备份。此外,该站点位于共享主机上,我无法使用 SQL Server 工具直接连接到数据库。不过,我可以针对它执行查询,所以如果有任何方法可以构建一个 SQL 更新语句来达到“嘿,找到整个数据库中所有表中的所有文本字段并执行此操作来清理它们”的效果,那将是最好。

最佳答案

从最近的备份中恢复数据。

关于sql - SQL 注入(inject)后清理的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32412/

相关文章:

database - SQLite 3 C API 事务

java - 选择给定时间段内状态历史表的 Activity 状态

MySQL:对按时间戳排序的大表进行非常慢的查询(尽管有索引)......

java - JPA : Inheritance - Discriminator value not taken into account in generated SQL

sql - 如何强制 MS Access 保留其 SQL 格式?

c# - 如何获取表和主键,如果表没有主键则显示null?

sql - 关于使用庞大的数据库,我需要了解什么?

c# - SqlCommand 正确关闭连接

c# - SQL Server 2014 在同一数据库表上同时运行超过 60 个更新进程时返回死锁(错误 1205)

mysql查询计算字段的问题