Try
                lblId.Text = CType(Trim(Request.QueryString("id")), Integer)
            Catch ex As Exception
                Response.Write("<script>window.location.href='Default.aspx'</script>")
                Exit Sub
            End Try
            Dim dr As SqlClient.SqlDataReader
            conn.GetDr("select * from Info where id=" & lblId.Text & "", dr)
            If dr.Read() Then
                lblTitle.Text = dr.Item("title")
                lblContent.Text = dr.Item("content")
            End If
页面浏览方式:www.xxx.com/Info.aspx?id=1我就不明白了 这样将id强制转换成数字 还能存在注入??谁能帮忙给讲讲 最好告诉我这样怎么注入 谢谢了

解决方案 »

  1.   

    username = request("username") //获取用户名 这里是通过URL传值获取的 
    password = request("password") //获取密码 也是通过URL传值获取的 
    sql="select * from userlist where username = '" & username & "' and password = '" & password & "'" // 这边是拼接SQL字符串 ;之所会 
    //有注入问题 ,就是因为拼接的方式;如果你用参数的形式,就不会有注问 
    //题. admin 密码应该这样写: ' 随便 or 1=1 '     (随便指你随便输点东西就可以)
    后面解释了 怎么混过验证 还有更严重的情况,对方可以直接拼接删除库的SQL语句,直接把你的数据库给你干掉 
    因此在写此类SQL语句时,建议采用参数的方式 
      

  2.   

    直接转换成数字,据我所知不能注入吧倒是可能转换出错,可以使用  bool  int.TryParse(string Str,out int value)
      

  3.   

    谢谢1楼的兄弟 我明白怎么注入 但是我不明白 将传过来的字符串强制转换成数字 那我倒是想知道怎么注入攻击 3楼兄弟 我用了try catch 当转换错误的时候 我会让页面直接跳转到默认页面 我现在就是想知道 人家告诉我 我的这个页面存在注入 现在网站已经关闭了 我倒是真的很想问问他 到底怎么注入 我承认我编程不是太好 但是至少也搞过3年 注入的东西我也知道 但是我真的没见过纯数字能够注入的 
    我该怎么办?直接去问告诉我的人?请大家帮助一下 谢谢了
      

  4.   

    谁告诉你,你就去问谁啊!
    我觉得这样是不会被注入的,他是否利用其它入口进行的注入?我也遇到同样情况
    我去年发布了一个网站,几乎全ajax,找工作时一位面试官说我的网站有漏洞,说被他sql注入了,让我回去看
    但其实不然,他只是向服务器发送了伪造的请求,并成功得到回应,我想这个不应该叫sql注入吧建议先搞清楚具体情况!!
      

  5.   

    对方可能只是用工具检查的,只要有拼接SQL一律认为有SQL Injection。但是不管如何拼接语句都是个不好的习惯,还是改成用参数吧。
      

  6.   

    对于楼主的代码,个人认为是进行不了sql注入的。
      

  7.   

    以我的水平,看不出来是否还能注入我到是觉得你这样即使没法注入,写法也不合理。既然知道lblid.text只能是数字,为什么传之前不校验一下,很简单就一句话的事。如果不是数字,要传到服务器校验,然后再异常处理挑到另一个页面。不觉得弯绕的太多了吗