木子屋 Dnawo's BLOG

慎用Request.Params获取参数值

👤 dnawo 📅 2009-04-25 👁 13832 👍 0 💬 0 🔄 来源:本站原创
今天一通道技术反映我们提交过去的url太长了,形如:

http://service.5k3g.com/r.aspx?i=8986272,/ay/bajie10669611.ashx

在日志中找了相应的记录,日志如下:

http://219.140.177.243/ay/bajie10669611.ashx?pid=5&phone=13182000000&name=%e5%a8%83%e5%a8%83&url=http%3a%2f%2fservice.5k3g.com%2fr.aspx%3fi%3d8986272

并没有多提交内容,最后发现原因是对方使用HttpContext.Current.Request.Params获取参数值。我们先来看一个例子:

Response.Write(HttpContext.Current.Request.Params["url"]);
Response.Write(HttpContext.Current.Request["url"]);

1).http://localhost:1043/net/Send.aspx不带参数时结果

/net/Send.aspx //说明:Request.ServerVariables["url"]
/net/Send.aspx //说明:Request.ServerVariables["url"]

2).http://localhost:1043/net/Send.aspx?url=http://www.mzwu.com/带参数时结果

http://www.mzwu.com/,/net/Send.aspx //说明:Request.QueryString["url"],Request.ServerVariables["url"]
http://www.mzwu.com/ //说明:Request.QueryString["url"]

现在非常清楚了,我们来查看下官方两个方法的说明吧:

HttpContext.Current.Request.Params是获取 System.Web.HttpRequest.QueryString、System.Web.HttpRequest.Form、System.Web.HttpRequest.ServerVariables 和 System.Web.HttpRequest.Cookies 项的组合集合;
HttpContext.Current.Request是从System.Web.HttpRequest.Cookies、System.Web.HttpRequest.QueryString、System.Web.HttpRequest.Form 和 System.Web.HttpRequest.ServerVariables 集合中获取指定的对象。

所以上边的问题只需将HttpContext.Current.Request.Params改为HttpContext.Current.Request即可。

评论(0)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 年轻人少奋斗8年的10个方法 下一篇 → 使用Sandcastle生成C#类库文档