存在严重sql注入漏洞,建议用参数

解决方案 »

  1.   

    string str = "select jbxm from AllInfo1 where jbsfz='"+Request.Form["TextBox1"]+"' and jbsheng='"+sheng+"'";
    对textbox1的输入不进行判断,很容易被sql攻击哦!你这个看起来是验证用户登录的吧?取资料的时候用Session["sfzbh"]判断?如果是,那你要贴取资料时的源码。sd.Close();
    Conn.Close();
    return;
    这三句可放在if(){}外面
      

  2.   

    Request.Form["TextBox1"]  == Request.Form["TextBox1"].ToString()Response.Write("<script language=javascript>alert(\"身份证编号错误,请重新输入!\");<"+"/script>");这句的\"可用'代替,看起来爽一点。(以上纯属废话)
      

  3.   

    程序逻辑错误!
    string str = "select jbxm from AllInfo1 where jbsfz='"+Request.Form["TextBox1"]+"' and jbsheng='"+sheng+"'";
    这是去数据库查找.
    if(sd.HasRows)
    {
    }
    如果有记录,说明只要数据库中有这个人就可以了,
    如果想验证身份证就应该从数据库去身份证,然后判断和他输入的一致不一致,一致查看资料.
      

  4.   

    我对sql不是很熟悉,就是想验证一下,我想先不考虑安全问题,只要能一对一的验证就可以阿,请教中……
      

  5.   

    thinkingforever:不是很明白你说的
      

  6.   

    Response.Write("<script language=javascript>alert('身份证编号错误,请重新输入!');</script>");
      

  7.   

    if(sd.HasRows)
    {
       通过用户的输入,从数据库中读取唯一的一条数据呀
    }
      

  8.   

    補充一點,對DB的操作最好寫成sp;
    安全,並且很容易維護!也可以減輕你寫程序的壓力,
    因為我們可以在sp裏作幾乎所有的邏輯的控制並且,樓主還要study一下命名規則的問題喔
    雖然不是什麽大問題,但是一旦你接觸一些複雜,
    特別是團隊合作開發的時候,命名不爽,會被K的喔並且命名好,也更方便日後維護喔
    你程式裏面的Request.Form["TextBox1"]
    看得很彆扭!!!
      

  9.   

    rollandx(劳动者):多谢你,我是刚开始接触这类编程,很多基础的东西我还是做的不够,我会尽快改的,可是我的这个问题现在头还是很乱,我用sqlDatareader读出来的数据不是唯一的么,还需要再验证一次么