首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql注入攻击

sql注入攻击
EN

Stack Overflow用户
提问于 2011-11-19 16:27:12
回答 2查看 4.4K关注 0票数 4

我有一个asp.net site...Last日,我在日志中看到我受到了sql注入的攻击,比如:

异常:在Application_Error事件中捕获的错误(在:http://gramma.ro/Site/DetaliiProdus.aspx?c=m1&p=1465&s1=45&s2=79/**/or/**/1=@@version中))

当然,这会引发异常,因为我在执行任何sql查询之前都会检查参数:

代码语言:javascript
复制
Error Message:Input string was not in a correct format.

对于所有这些异常,我将用户重定向到特定的错误页面。

当然,这些攻击现在并不影响我(我正在使用参数化的sql命令),但是我正在使用ips,并将它们放在IIS地址和域限制中,这样Ip就不能再访问我的站点了。

我的问题是:我还能做些什么吗?似乎这个恶意用户,甚至我阻止了他的ip,正在尝试来自另一个ip的同样的攻击(我在过去的3天里阻止了大约6 ips,这是非常丑陋的……)。你能建议我做些什么吗?

更新:更新:所有这些攻击都将/**/or/**/1=@@version置于查询参数值,所以我确信攻击不是来自用户的随机问题,而是真正的SQL注入攻击。问题是这些ips来自不同的地方,所以我不能向一些互联网提供商或主机公司报告.

EN

回答 2

Stack Overflow用户

发布于 2011-11-19 17:07:01

这将为您显示的单个请求提供保护。若要正确防止SQL注入,请在可能的范围内对所有查询进行参数化,以验证用户输入参数。

在我的代码中,我实际上更进一步,在任何意外的查询字符串上抛出异常,这使得API发现(这就是这次攻击)更加困难。

将此添加到global.asax中

代码语言:javascript
复制
void Application_BeginRequest(object sender, EventArgs e)
{
    if(HttpContext.Current.Request.Url.ToString().Contains("@@version"))
    {
        throw new HttpException(400,"Bad Request");
    }
}
票数 2
EN

Stack Overflow用户

发布于 2016-06-04 15:37:07

对应用程序使用存储过程。这样就可以防止SQL注入。因为存储过程只接受开发人员描述的有限参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8195428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档