1

我们记录了有人试图添加/**/or/**/到查询字符串的获取请求。

这是什么意思,它会在哪里造成损害,我应该在我的代码中注意什么?

编辑

具体来说/**/or/**/1=@@version)--——目标是什么?

4

1 回答 1

3

几乎可以肯定,这是一次SQL 注入攻击或类似的尝试。就 SQL 而言,最容易思考(和阅读)这种漏洞,即使在您的情况下它是一个稍微不同的攻击向量。

这个想法是,如果你有这种 SQL:

"SELECT User from USERS where UserName =" + user + " AND PASSWORD = " + password

然后将像您直接看到的值插入 SQL 中可能会导致查询的含义与您预期的完全不同(通常更宽松)。通常 SQL 注入攻击包含单引号,以终止 SQL 中的文本值。你确定你看到的攻击没有单引号吗?

如果您在整个应用程序中使用参数化 SQL(并且在数据库中没有动态 SQL),并且从不尝试将传入的用户指定值用作任何类型的“代码”,那么您应该没问题。

我怀疑在您的情况下,攻击者可能不会使用 SQL 来渗透您的安全性;它很可能是Javascript。但是这个想法是一样的:如果您以某种形式将任何用户输入用作“代码”,例如,通过构建一个与预定义代码混合的字符串,然后执行该代码,您就会使自己容易受到攻击。始终将代码视为代码(在您的控制之下),将数据视为数据。

于 2012-06-29T06:08:20.260 回答