您的位置:首页 > 编程语言 > Java开发

Java防止SQL注入

2013-01-15 23:36 239 查看
1. 定义:
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

2. 防止SQL注入的方法:
A:使用PreparedStatement代替Statement
1)使用PreparedStatement 比Statement的代码的可读性和可维护性更好.
2)PreparedStatement尽最大可能提高性能.
3)最重要的一点是PreparedStatement极大地提高系统的安全性
PreparedStatement和Statement对比实例:
1.stmt.executeUpdate("insert into tb_name (col1,col2,col2,col4) values ('"+var1+"','"+var2+"',"+var3+",'"+var4+"')");   
2.  
3.perstmt = con.prepareStatement("insert into tb_name (col1,col2,col2,col4) values (?,?,?,?)");   
4.perstmt.setString(1,var1);   
5.perstmt.setString(2,var2);   
6.perstmt.setString(3,var3);   
7.perstmt.setString(4,var4);   
8.perstmt.executeUpdate();



sql="select * from admin where username=? and password=?";
 PreparedStatement psmt= con.prepareStatement(sql);
 psmt.setString(1,username);
 psmt.setString(2,password);
 ResultSet rs = psmt.executeQuery();
 if(rs.next){
 rs.close();
 con.close();
 return false;
 }
 else{
 rs.close();
 con.close();
 return true;
 }

B: 使用字符串过滤

public static String filterContent(String content){
   String flt ="'|and|exec|insert|select|delete|update|count|*|%                   

|chr|mid|master|truncate|char|declare|;|or|-|+|,";
   Stringfilter[] = flt.split("|");
 for(int i=0;i<filter.length ; i++)
    {
      content.replace(filter[i], "");
    }
     return content;
  }
或者使用Filter来过滤全局的表单参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: