我们的网站上经常有一些访问链接上有重复的 URL 参数,如:Search.aspx?date=20150701&edate=20150801&date=20150701&edate=20150801&hide=0 这样的,后台接收到参数值就不是一个有效的时间格式。
我尝试去通过 NameValueCollection 解决没有成功,想问下大家是怎么解决的。
链接里怎么会有2个一样的参数名而带着不同的值呢?这种情况怎么发生的?带参数的时间我们函数里可以使用字符串的格式接受,然后下一步可以将字符串转换成时间格式。
这些参数是别的系统做的固定链接跳转导致的。
querystring重复的键名传参是不正确的,解析不出来就给一个默认值或者直接拒绝服务。
实际上碰到参数非法的情况,应该早点把问题暴露出来,因为这种情况很可能是程序bug或者恶意攻击。
这些参数是别的系统做的固定链接跳转导致的。
不能从源头解决, 那你就只能用正则去取值了。
嗯,我只把符合格式的处理了,其他格式的直接不处理了。
提交数据时就应该对同名参数重新赋值~而不是直接拼接querystring~
别人访问来的链接怎么控制?
@Charles Zhang: 这么低级的错误就直接返回错误吧~让他们去改正~总不能他们发“贰零壹伍年柒月壹日”你也要适配吧~
@Charles Zhang: 要不然就把Request.QueryString的值转存到Dictionary里~重复的就保存最后的~
@NetRube: 嗯,我已经把不合法的参数抛出了