【问题标题】:How To Protect MVC 5 ASP.Net application against HTTP Parameter pollution [closed]如何保护 MVC 5 ASP.Net 应用程序免受 HTTP 参数污染 [关闭]
【发布时间】:2017-09-28 09:06:07
【问题描述】:

在网络安全审查的范围内,我们从我们的提供商那里得到了一份安全扫描评估结果,其中提到 HPP(Http Parameter Polution)是应用程序中的一个漏洞。 在我们的例子中,我们正在构建一个 MVC5 应用程序,我想就如何解决这个问题提供一些建议。我知道,它是关于验证和检查 URL,但如果我得到一个解决方案示例,那就太好了。我想将它集中在应用程序中。非常感谢您的帮助。

【问题讨论】:

  • @SoftLogics,你看过 OWASP 网站吗?
  • @alaa_sayegh,是的,我做到了。我已经有了一些想法,但我需要有一个直接的答案以避免多次重新扫描应用程序(修复后扫描)。
  • @SoftLogics,我之前也遇到过同样的问题,我使用 controllerbase 类中的方法来验证每个请求中的 URL。我将其粘贴为答案,希望对您有所帮助

标签: c# asp.net-mvc security web


【解决方案1】:

查看此链接: http://blog.mindedsecurity.com/2009/05/client-side-http-parameter-pollution.html

这是 OWASP 对该主题的官方定义:

Reflected HTML Parameter Pollution (HPP) 是一种注入弱点漏洞,当攻击者可以注入分隔符并更改应用程序生成的 URL 的参数时,就会发生这种漏洞。攻击的后果取决于应用程序的功能,但可能包括访问和潜在地利用不可控变量、进行其他攻击(如跨站点请求伪造)或以非预期方式更改应用程序行为。建议包括使用严格的验证输入以确保服务器正确处理编码的参数分隔符“%26”,并在用户提供的内容包含在应用程序生成的链接或其他形式的输出中时使用 URL 编码。

我创建了一个 ControllerBase 类,所有控制器都继承它,在这个类中我实现了 OnActionExecuting 方法,在这个方法中我验证了 url aginst %26 和 %3

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    try
    {
        if (Request.Url != null)
        {
            var queryUrl = Request.Url.Query;
            if (queryUrl.Contains("%26") || queryUrl.Contains("%3"))
            {
                var routeValueDictionary = new RouteValueDictionary
                {
                    {"controller", "Error"},
                    {"action", "Index"}
                };
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(routeValueDictionary));
            }
        }
    }
    catch (HttpRequestValidationException exception)
    {
        var routeValueDictionary = new RouteValueDictionary { { "controller", "Error" }, { "action", "Index" } };
        filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(routeValueDictionary));
    }
}

通过此修复,我总是能得到干净的扫描结果。 尝试一下。希望对你有帮助

【讨论】:

  • 谢谢,它看起来真的很棒,非常感谢您的详细描述,非常有帮助!!
猜你喜欢
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 2016-07-07
相关资源
最近更新 更多