我听人说在用户名的框里输入sql语句可以绕过登陆验证,我不知道这个是怎么回事?谢谢大家,谁能给我解释一下,并且说下安全的代码怎么写?

解决方案 »

  1.   

    用PrepareStatement就不会有这个问题了吧输入sql语句的基本上都是用单引号这种sql里面的特殊字符的,这个方法比较老了,基本上大家编程的时候都注意到了
      

  2.   

    用 preparedStatement 来执行 SQL 语句,而不是自己凑 SQL,这样才能避免 SQL 注入。其实那些有 SQL 注入漏洞的网站都是新手做的。
      

  3.   

    我没有听说过呀,如果你的MVC,SSH,SPRING的技术之后,也许就不会这样想啦,怎么可能叱,那样的话,网上银行还会有人用吗!还有人敢用吗!
      

  4.   

    SQL注入
    如果你将用户输入的东西没做处理就交给后台做操作数据库处理,那就会出现这种漏洞
    例如你验证用户名是否重复的SQL语句,select userid from usertable where username=XXX
    这个XXX就是用户输入的名字
    但如果用户这么输入:'abc' or '1'='1'
    当执行的时候就会出现:select userid from usertable where username='abc' or '1'='1'
    那你的查询语句不就永远都返回true了
    如果是验证密码的,那不就等于没有密码了吗?
    对于防范,google下会有一大堆
      

  5.   

    如果你的MVC,SSH,SPRING的技术之后,也许就不会这样想啦SQL注入 
    如果你将用户输入的东西没做处理就交给后台做操作数据库处理,那就会出现这种漏洞 
    例如你验证用户名是否重复的SQL语句,select userid from usertable where username=XXX 
    这个XXX就是用户输入的名字 
    但如果用户这么输入:'abc' or '1'='1' 
    当执行的时候就会出现:select userid from usertable where username='abc' or '1'='1' 
    那你的查询语句不就永远都返回true了 
    如果是验证密码的,那不就等于没有密码了吗?以上观点都是对的,主要是sql 注入
    就是嵌套查询
      

  6.   

    SQL注入而已嘛
    超级新手才会犯的错误啊.......最好的办法用存储过程........总之不要自己拼SQL语句就OK了