2011-04-21 16 views
3

我们做了Fortify的在我们的ASP.net应用程序进行扫描。我们发现有很多头部处理问题。所有问题都指向Response.Redirect()。请查看下面我编码参数的代码。即使如此,下面的代码也被视为头部处理问题。打开重定向或操纵头从Fortify的问题上扫描asp.net

  int iCount = 0; 
      foreach (string Name in Request.QueryString.Keys) 
      { 
       iCount++; 
       if (iCount > 1) 
       { 
        url += "&"; 
       } 
       url += Name; 
       if (Request.Params[Name]!=null) 
       { 
        url += "=" + AntiXss.UrlEncode(Request.Params[Name]); 
       } 
      } 
      Response.redirect(Server.UrlPathEncode(page.root) + "\Test.aspx?" + url); 

有些机构能让我知道还有什么需要改变来解决问题吗?

回答

0

看来,Fortify的percieves名称由用户自定义,这将通过靶向“Manupulation”的错误。如果它是真的,尽可能使用预定义的列表。

5

取下Server.UrlPathEncode(page.root)部分并使用Server.Transfer()而不是Response.Redirect()

Server.Transfer()用户转移到同一网站的另一个页面,并造成几乎没有意外指导有人到另一个站点的危险。

Response.Redirect()当你想别人重定向到另一个网站是很好的。

另外,Fortify的往往不喜欢Request.Params[]由于其可能的歧义。在某些服务器上,细心的攻击者可能会发送UTF-7或非打印版本的名称作为请求变量之一,并让变量的名称包含实际的XSS注入,或覆盖GET请求值与一个同名的cookie。确保名称和值都是htmlencoded,并考虑使用Request.QueryString[parametername]而不是Request.Params[parametername]以避免更多Fortify问题。

希望这可以让你过去你Fortify的问题!