问题描述:
项目开发中遇到的sql注入问题,这里分享一个心得,希望能对您有所帮助; 下面是对于单个字段的防sql注入: //这里也可以写成公共方法
//获取被sql注入的字段
String recent = "yes";
//将注入的特殊符替换
recent.replaceAll(".*([';]+|(--)+).*", "");
return "";
如果我们遇到的是组合条件的查询,这时候分享下面的方法,希望可以帮助到你:
分页查询条件增加Object参数
public pageList getPageList(String whereStr,String orderByStr,PageListData page,Object...objects){
}
分页查询sql执行前加上:
for(int i=0;i<object.length();i++){
Object object = objects[i];
preparedStatement.setObject(i+1,object);
}
在业务层处理sql时:
//查询条件放入list中
List list = new ArrayList();
if(word1 != null && !"".equals(word1)){
String word1 = recentActionForm.getWord1(word1);
list.add(word1);
}
if(word2 != null && !"".equals(word2)){
String word1 = recentActionForm.getWord1(word2);
list.add(word2);
}
if(word3 != null && !"".equals(word3)){
String word3 = recentActionForm.getWord1(word3);
list.add(word3);
}
//分页查询条件塞入
pageListData = pageList.getList("where 1=1 and word1 = ? and word2 = ? and word3 = ?",list.toArray());
对于特殊业务的字段防sql注入,建议单独写个拦截器,给出预警提示!
好了,分享到这里就结束了,希望我的分享可以帮到你,您的支持就是我前进最大的动力.,欢迎指正!