java程序防止sql注入的方法
1.通过拦截 过滤参数
2.通过底层DAO 对每个参数进行过滤
3.进行参数绑定如
使用named parameter
使用named parameter,我们重新写上面的查询语句:
String queryString = "from table item where clum1 like :param";
冒号后面是一个named parameter,我们可以使用Query接口将一个参数绑定到param参数上:
List result = session.createQuery(queryString)
.setString("param", param)
.list();
如果有多个参数需要被帮定,我们这样处理:
String queryString = "from table where clum1 like :param1"
+ "and clum2 > :param2";
List result = session.createQuery(queryString)
.setString("param1", param1)
.setDate("clum2 ", param2)
.list();
clum2 //是date类型
最后,在named parameter中可能有一个参数出现多次的情况,应该怎么处理呢?
String sql= "from table where clums like :param"
+ " or clums like :param";
List result = session.createQuery(sql)
.setString("param", param)
.list();