本来从数据库读出的page.asp?id=100用户改了page.asp?id=1111,然后就会报错,我获取的时候总要去查一下有没此ID。很麻烦吧,我很多数据都是通过url传值的或者有什么方法防止这种事发生。?

解决方案 »

  1.   

    获取一下最大的Id,然后判断,如果传入的比这个大,就把Id改为最大的在取数据的时候判断集合是否为空,不为空再读取数据
      

  2.   

    if(Request.QueryString["id"]!=null||..............(自己定规则))
    {
    }
    else
    {
      return;(或者response.redirect('..')等其他容错处理)
    }
      

  3.   

    在web.config中定义错误信息页,或者在全局文件Global的Application_Error方法中重定向到错误信息页。
      

  4.   

    自己进行处理,首先把获取的id进行处理(比如过滤'...),然后查询完毕判断时候获取到数据了,
    没有就说明id不存在,跳到没找到页面,就像CSDN 404 会告诉你:你懂得,一样的,如果有数据,进行显示,
      

  5.   

    数据加密,然后如果用户输入的有问题就跳到错误页,在接参数的时候进行异常处理。百度百科原来也有参数,自己改参数的话,就跳到自定义错误页了。现在百度改为url重写了。那个id被重写到htm前面了。
    http://baike.baidu.com/view/170250.htm?func=pfpic
      

  6.   

    try
                {
                    if (Request.QueryString["id"] != null)
                    {
                        Request.QueryString["id"].ToString();
                    }
                    else
                    {
                        
                    }
                }
                catch (Exception)
                {                throw;//history.go(-1)
                }
      

  7.   

    page.asp?id=1111
    不应该报错吧,应该提示该id不存在什么的
    如果报错是你代码不严谨
      

  8.   

    “用户改了page.asp?id=1111”
    ——对于一些“恶意”或“有意”的提交,不必过滤什么,直接拒绝,重定向到错误页。这样可以一定程度上简化开发。
      

  9.   

    不想这个页面传入一个参数,又要new 一个 bll 去查. 哪个页面又new bll
      

  10.   

    ID判断类型。用参数的方式提交SQL。
    基本上就不会不安全。使用数据的赋值的时候,要先判断数据是否为空。如果空就提示该数据不存在,或者转到错误页面。
      

  11.   

    加密有个啥用啊。比如?id=sdafjdflkj34234 一堆东西。那用户也可以在这对东西上加上一串 as3243 也会报错吧。
      

  12.   

    把id加密放在 url上 读取解密就行了
      

  13.   

    有一个加密功能,楼主可以去百度一下Request加密,或者用cookie
      

  14.   

    把你的传的参数加密....
    string url = "http://192.168.10.14" + root + "?id=" + PassWord.Encode(hyid);
      

  15.   

    if(Request.QueryString["id"]!=null){
       Table table=Bll.GetTable(int.Parse(Request.QuesryString["id"]));
        if(table !=null){
             .....
         }else{
           Response.redirect("");
          }
    }
      

  16.   

    取到的数据在使用之前先对数据进行判断.比如id=111的.那么id应该是int型的
    就先
    if (!int.TryParse(Request.QueryString["id"].ToString(),out id)
    {}
      

  17.   

    这是必须的,必须要判断id能不能转换成数值类型,然后在数据库查是否存在此ID。
    什么都省了,公司是不是可以连你也省得雇佣了?
      

  18.   

    除了通过request.querystring[]获取id,还能用什么方法呢???