1

我有一个简单的 asp.net 网页表单页面,它只是拦截 http 请求、从查询字符串中提取参数、进行一些检查并根据参数重定向请求。

最近,我在日志中似乎出现了 HttpRequestValidationException 错误。这是因为我们接收的 url 没有编码,并且我们将 Request.Validation 设置为 true。

现在,我想停止出现这个错误,但我仍然希望受到保护以免受注入。我在想我可以关闭 Request.Validation 并对 URL 进行简单的编码,然后再对它进行任何操作。这是一个有效的解决方案吗?另外,我应该使用什么类型的编码?HTML编码还是url编码?我猜 HTML 编码不能防止 javascript 或 sql 注入,对吧?

提前致谢。

4

1 回答 1

0

现在,我想停止收到此错误

你有什么理由不想再得到这个吗?这很好——它告诉你一个危险的请求被抓到了。如果您只想阻止这些命中日志,为什么不吞下异常呢?

这可以解决问题(Global.asax):

void Application_Error(object sender, EventArgs e)
{

    Exception exc = Server.GetLastError();
    if(exc.GetType() == typeof(HttpRequestValidationException))
    {
        //ignore and don't write to log
    }

}

这还具有仍然记录所有其他异常的优点。

于 2012-05-03T17:01:01.170 回答