预编译为何可以防止sql注入
发布时间:08/01 来源:未知 浏览:
关键词:
大家都晓得,java中JDBC中,有个预处置功能,这个功能一大优势就是能提高施行速度尤为是屡次操纵数据库的状况,再一个优势就是预防SQL注入,严厉的说,应当是预防绝大多数的SQL注入。
用途就是如下边所示:
String sql="update cz_zj_directpayment dp"+ "set dp.projectid = ? where dp.payid= ?"; try { PreparedStatement pset_f = conn.prepareStatement(sql); pset_f.setString(1,inds[j]); pset_f.setString(2,id); pset_f.executeUpdate(sql_update); }catch(Exception e){ //e.printStackTrace(); logger.error(e.message()); }
那为何它这样处置就能预防SQL注入提高平安性呢?其实是由于SQL语句在程序运转前已经进行了预编译,在程序运转时首先次操纵数据库以前,SQL语句已经被数据库剖析,编译和优化,对应的施行规划也会缓存下来并允许数据库以参数化的情势进行查询,当运转时动态地把参数传给PreprareStatement时,即便参数里有敏锐字符如 or '1=1'也数据库会作为一个参数一个字段的属性值来处置而不会作为一个SQL指令,如此,就起到了SQL注入的作用了!
以上就是预编译为何可以防止sql注入的细致内容,更多请关注 百分百源码网 其它相干文章!