JDBC-Prévention des vulnérabilités d'injection SQL
L'utilisation de la précompilation peut prévenir efficacement les vulnérabilités d'injection SQL.
Raison : ne peut pas empêcher efficacement les vulnérabilités d'injection SQL dans l'instruction car l'utilisateur peut transmettre certains caractères spéciaux lors de la transmission de paramètres, tels que des guillemets simples ' , ou -- cela affectera notre instruction SQL.
Donc, utiliser l'espace réservé dans la précompilation, c'est-à-dire ?, peut résoudre efficacement ce problème.
public class Prepared { @Test public void papa(){ Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ //注册驱动 // Class.forName("com.mysql.jdbc.Driver"); //建立连接 // conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/user","root","dumy"); conn =JDBCUtils.getConnection(); //编写sql代码 //String sql = "select * from administer where id = ?"; String sql = "select * from administer where username = ? and password =?"; //预编译 pstmt = conn.prepareStatement(sql); //给? 赋值 pstmt.setString(1, "ddd"); pstmt.setString(2, "123"); rs= pstmt.executeQuery(); while(rs.next()){ System.out.println("登录成功"); } }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtils.release(pstmt, conn, rs); } } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!