我有一个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查询之前都会检查参数:
Error Message:Input string was not in a correct format.对于所有这些异常,我将用户重定向到特定的错误页面。
当然,这些攻击现在并不影响我(我正在使用参数化的sql命令),但是我正在使用ips,并将它们放在IIS地址和域限制中,这样Ip就不能再访问我的站点了。
我的问题是:我还能做些什么吗?似乎这个恶意用户,甚至我阻止了他的ip,正在尝试来自另一个ip的同样的攻击(我在过去的3天里阻止了大约6 ips,这是非常丑陋的……)。你能建议我做些什么吗?
更新:更新:所有这些攻击都将/**/or/**/1=@@version置于查询参数值,所以我确信攻击不是来自用户的随机问题,而是真正的SQL注入攻击。问题是这些ips来自不同的地方,所以我不能向一些互联网提供商或主机公司报告.
发布于 2011-11-19 17:07:01
这将为您显示的单个请求提供保护。若要正确防止SQL注入,请在可能的范围内对所有查询进行参数化,以验证用户输入参数。
在我的代码中,我实际上更进一步,在任何意外的查询字符串上抛出异常,这使得API发现(这就是这次攻击)更加困难。
将此添加到global.asax中
void Application_BeginRequest(object sender, EventArgs e)
{
if(HttpContext.Current.Request.Url.ToString().Contains("@@version"))
{
throw new HttpException(400,"Bad Request");
}
}发布于 2016-06-04 15:37:07
对应用程序使用存储过程。这样就可以防止SQL注入。因为存储过程只接受开发人员描述的有限参数。
https://stackoverflow.com/questions/8195428
复制相似问题