从asp.net上的Fortify扫描打开Redirect或Header Manipulation问题

Luc*_*cky 3 asp.net security redirect fortify

我们在ASP.net应用程序上进行了Fortify扫描.我们发现有很多标头操作问题.所有问题都指向Response.Redirect().请看下面我编码参数的代码.即使这样,下面的代码也算作标题操作问题.

            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);
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我还有什么需要改变来解决这个问题吗?

小智 5

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

Server.Transfer() 将用户转移到同一站点上的另一个页面,几乎没有意外将某人引导到另一个站点的危险.

Response.Redirect() 当你想将某人重定向到另一个网站时,这是有益的.

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

希望这会让你超越你的Fortify问题!