1. 程式人生 > >資料庫連線中使用PreparedStatement預編譯防止SQL注入

資料庫連線中使用PreparedStatement預編譯防止SQL注入

//使用預編譯不需要對SQL語句進行拼接,而是使用?佔位符,因此可以防止SQL注入,提升了安全性。
1.提高程式碼可讀性和可維護性
2.提高sql語句執行效能
3.提高安全性

PreparedStatement pst=new PreparedStatement();
String sql=”select * from user2 where name=?”
String userName=”lily”;
Pst.setString(1,userName);
   pst=conn.prepareStatement(sql);
   pst.setString(1,user.getName());
   rs=pst.executeQuery();

SQL注入:
登入頁面使用者名稱輸入(username):x
登入頁面密碼輸入(password):x’ or ‘1’=’1
由於登入時的sql語句為:String sql=”select * from user where username=’”+username+”’ and password=’”+password+”’”;
使用者密碼在sql拼接中加入了 or 1 = 1的判斷條件,始終為真,所以肯定能登入成功。