如题,今天测试人员在测试的时候,例如我浏览器地址为http://localhost:33630/web/terminal/doctor/FamilyDoctorList.aspx?areaCode=210102   但是当我尝试 http://localhost:33630/web/terminal/doctor/FamilyDoctorList.aspx?areaCode=‘210102’;L
或者随便改下参数结果就报错,我该怎么处理不让用户拼接,或者他输入的任何数据被过滤掉,
使最后还是保存最初始的 areaCode=210102   我该怎么办。。

解决方案 »

  1.   

    用户当然有权力自己构造Url的参数了,但是你不处理不就得了。
      

  2.   

    if (Request.QueryString["pp1"] == null ) Response.Redirect("nonePage.aspx");
    或者根据你参数的特性判断
    然后跳转到出错页面
      
    其实这样数据的保密性不是很好
    最好的方法就是用post方法,把要传的数据用post方法传送,这样比较难伪造。
      

  3.   

    检查areaCode这个参数,如果不是数字,就设置为0,让他得到一个空列表
      

  4.   

    不让用户输入这个肯定是不可能的。实际上即使是在页面上的<input type=text />字段,你用javascript之类的做了减产,用户也照样可以向你的服务器提交任何值。所以关键都是在服务器端处理。既然你已经会“报错”了,那么说明服务器端已经可以处理了,只是你的处理方法过于粗糙而已。
      

  5.   

    如果参数是整数转换写在try{}cathch{}里面如果被认为修改成字符串就被catch掉了,如果参数是字符串那么可以写一个函数来过滤塞
      

  6.   

    如果参数是数字那么转换成数字,转换写在try里面,如果被认为修改成字符串那么就被捕获了,如果参数是字符串就可以写个函数来过滤
      

  7.   

    解决方案:disable掉用户浏览器的地址栏.