1. 定义:
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
2. 防止SQL注入的方法:
A:使用PreparedStatement代替Statement
1)使用PreparedStatement 比Statement的代码的可读性和可维护性更好.
2)PreparedStatement尽最大可能提高性能.
3)最重要的一点是PreparedStatement极大地提高系统的安全性.
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来过滤全局的表单参数。