CAT.NET:漏洞还是误报?

时间:2011-01-05 15:52:42

标签: asp.net security cat.net

偶尔系列中的第二名: Here's the first one

CAT.NET是否正确,以下是ASP.NET中的真正漏洞还是误报?

var myInt = Int32.Parse(txtUserInput.Text);

Response.Redirect(string.Format("myPage.aspx?myId={0}", myInt);

CAT.NET将此报告为需要通过编码myInt进行补救的重定向漏洞。

3 个答案:

答案 0 :(得分:1)

我不相信,它可能会导致异常,因此TryParse可能是更好的方法。它只是大喊大叫,因为你正在接受用户输入并根据它进行重定向。它可能有点过于激进,但并不是很糟糕。

答案 1 :(得分:1)

我不会称之为危险但不是我自己写的方式

int myInt;
if(Int32.TryParse(txtUserInput.Text,out myInt)){
    Response.Redirect(string.Format("myPage.aspx?myId={0}", myInt);
   }

如果由于用户输入错误导致解析失败并且我们明确地输入了int,那么我的思维会更清晰,因为它不会抛出异常。

任何错误处理代码都可以捆绑到最后的else语句中。

答案 2 :(得分:0)

此代码不存在可利用的漏洞。任何漏洞都是myPage.aspx对myId值的影响,而不是你的url的构建方式。任何人都可以像在查询字符串中一样轻松地直接命中myPage.aspx。

然而,这是不好的做法,假设您没有在这两行之间留下任何代码。您应该验证txtUserInput.Text只包含数字字符,并且在允许的值范围内。

漏洞利用是因为用户提供的数据被发布到的页面不正确解析 - 而不是不正确地生成URL。虽然最好确保您的网站不会因为表单中的内容而写入损坏的URL,但前端的输入验证与安全性无关。重要的是接受输入的代码所做的事情,因为任何帖子或查询字符串都可以伪造。