禁用请求验证/编码 URL

本文关键字:编码 URL 验证 请求 | 更新日期: 2023-09-27 18:33:00

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

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

现在,我想停止收到此错误,但我仍然希望受到保护免受注入。我在想我可以关闭 Request.Validation 并在对 URL 执行任何操作之前对其进行简单编码。这是一个有效的解决方案吗?另外,我应该使用哪种类型的编码?HTML 编码还是网址编码?我猜HTML编码不会防止javascript或sql注入,对吧?

提前谢谢。

禁用请求验证/编码 URL

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

有什么理由你想停止得到这个吗? 这很好 - 它告诉您捕获了一个危险的请求。 如果你想阻止这些击中日志,为什么不吞下异常呢?

这将解决问题(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
    }
}

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