网站怎么防止这样的事发生,越详细越好,谢谢各问的参与,还有就是如果代码都是能sql加参数的形式,还存在这样的问题吗?

解决方案 »

  1.   

    过滤URL中的一些特殊字符,动态SQL语句使用PrepareStatement..
      

  2.   

    注入的方式就是在查询条件里加入SQL字符串. 可以检查一下提交的查询参数里是否包含SQL,但通常这样无益.最好的办法是不要用拼接SQL字符串,可以用prepareStatement,参数用set方法进行填装
      

  3.   

    用PreparedStatement接口就可以防止SQL攻击.....
      

  4.   

    sql注入形式:...where name="+name+",这样的sql语句很容易sql注入,可以这样:
    jdbcTemplate.update("delete from userinfo where id=? and userId=?", new Object[]{userInfo.getId(),userInfo.getUserId()});
    我的一些代码,望有用!
      

  5.   

    如果是ibatis,还应该注意模糊查询的写法避免使用$$进行传值,防止sql注入。。其他的没有什么诀窍了
      

  6.   

    运用HIBERNATE可以防止注入问题,当然安全方面的工作要做很多工作比如比较流行的Xss,csrf等等!多了解下,其实相对比较简单!
      

  7.   

    PreparedStatement做查询,不用Statement做查询
      

  8.   

    过滤掉sql关键字,如对like、is等关键字进行过滤。
      

  9.   

    过滤关键字、特殊的sql符号或限制输入条件啊,或者加密数据库保存的重要信息等等,这个具体的建议查资料,网上有讲很多的,我用到的很少,因为我不专业
      

  10.   

    prepareStatement就可以做到了,不要拼接sql语句就好了
      

  11.   

    你都知道SQL注入的原理是什么,会有什么样的后果   难道还不能防止它?  问题是你不知道原理别人写出来也不知道是为了防止SQL注入
      

  12.   

    有测试web网站的注入的工具也可能推荐一下,希望积极发言啊。
      

  13.   

    谢谢wlf2131的回答,我从网上查了sql注入的解释,目前明白的程度就是:用客户提供的数据拼接sql语句时,由于用户放也了or and 之类的关键词使sql语句与希望的不一样了。在这个过程中可能导致一些信息泄露。
      

  14.   

    过滤关键字。
    不过想要学习如何防范,首先要学习如何攻击
    上次看到一个大牛为了避免引号过滤,把sql语句全部转成16进制提交
      

  15.   

    想要拼接sql语句,用MessageFormat.format("select * from user where name={0}",userName)亦可
      

  16.   

    PrepareStatement或者replace替换字符串
      

  17.   

    我用jsky测试了一下,感觉还行。
      

  18.   

    现在都很少有SQL注入了,你用preparedStatement,就可以
    还有就是不要同时查询用户名和密码
    而是,先查询用户名,然后获得的密码在和输入的密码比较
      

  19.   

    Sql注入漏洞攻击:如1'or'1'='1
    使用参数化查询避免
    cmd.CommandText="select count(*) from 表名 where username=@a and password=@b";
    cmd.parameters.Add(new SqlParameter("a",".."));
    cmd.parameters.Add(new SqlParameter("b",".."));
      

  20.   

    恩,用框架,用jpa的pojo。。就没这种事情了