public static String StringtoSql(String str)
  {
        str = nullToString(str, "");
        try {
            str = str.trim().replace('\'', (char) 1);
        } catch (Exception e) {
            return "";
        }
        return str;
    }
这个方法实现什么功能?是防止SQL注入吗?谢谢,

解决方案 »

  1.   

    过滤了'\''
    可能是防止sql语法报错吧估计是用String拼成sql语句时,确保where条件没有异常
      

  2.   

    不是 sql注入不是这样的 好像是类似于 'a'='a'这种可以返回一个ture的表达式
      

  3.   

    防止sql注入攻击有三种方式:
    第一种是字符检测,当检测到有破坏sql语句的字符的时候替换掉或者报错,例如【--】、【‘】、【=】等等,这种事程序手动实现,需要一定技巧。
    第二种是所有对数据库的访问全部封装成存储过程,通过存储过程对数据库的访问来获得或者删减值。
    第三种就是在程序中使用预编译语句,例如select * from table where id=? 这样的形式,然后后面再用preper.setString(1,"1")的方式。
    一般推荐使用第三种方式,这样比较简单一点。