Asp.net SQL注入攻击

Asp.net SQL注入攻击,asp.net,sql-injection,Asp.net,Sql Injection,我有一个asp.net站点…最近几天,我在日志中看到我受到sql注入攻击,如: 当然,这将引发异常,因为我在执行任何sql查询之前检查了参数: Error Message:Input string was not in a correct format. 对于所有这些异常,我将用户重定向到特定的错误页面 当然,这些攻击现在不会影响我(我正在使用参数化sql命令),但我正在获取Ip并将它们放入IIS-Ip地址和域限制中,这样Ip就不能再访问我的站点了 我的问题:我还能做什么?似乎这个恶意用户,甚

我有一个asp.net站点…最近几天,我在日志中看到我受到sql注入攻击,如:

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

Error Message:Input string was not in a correct format.
对于所有这些异常,我将用户重定向到特定的错误页面

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

我的问题:我还能做什么?似乎这个恶意用户,甚至我阻止了他的ip,正在尝试从另一个ip发起相同的攻击(我在过去3天内阻止了大约6个ip,这相当难看…)。你能建议我做些什么吗


更新:所有这些攻击都将
/**/或/**/1=@@version
替换为查询参数值,因此我很确定攻击不是用户随机发起的,而是真正的SQL注入攻击。问题是这些IP来自不同的位置,因此我无法向某些internet提供商或主机公司报告它们…

这将针对您显示的单个请求提供保护。要正确防止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");
    }
}

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

您是否控制应用程序的源代码?(即,是您的代码还是您运行的是封闭源代码应用程序)如果您拥有自己的代码,则会在意外的查询字符串上引发异常,使用参数化sql命令等。搜索每个请求的延迟太大,无法仅捕获100000个请求中的一个请求。更好的方法是在存在时保护输入变量。
void Application_BeginRequest(object sender, EventArgs e)
{
    if(HttpContext.Current.Request.Url.ToString().Contains("@@version"))
    {
        throw new HttpException(400,"Bad Request");
    }
}