SQL注入问题及预防方法
生活随笔
收集整理的這篇文章主要介紹了
SQL注入问题及预防方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SQL注入問題
sql存在漏洞,會被攻擊導致數據泄露 SQL會被拼接 or
package com.kuang.lesson02; import com.kuang.lesson02.utils.jdbcUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class SQL注入 {public static void main(String[] args) throws SQLException {//SQL注入login("sanjin","123456"); // login("' or '1=1","123456");}public static void login(String name,String password) throws SQLException {Connection conn =null;Statement st = null;ResultSet rs =null;try {conn = jdbcUtils.getConnection();//獲取連接st = conn.createStatement();//獲取SQL執行對象String sql = "select * from users where `NAME`='"+ name +"' AND `PASSWORD`='"+ password +"'" ;rs=st.executeQuery(sql);//查詢完畢返回結果集while (rs.next()){System.out.println(rs.getString("NAME"));}jdbcUtils.release(conn,st,rs);} catch (Exception e) {e.printStackTrace();}finally {jdbcUtils.release(conn,st,rs);}} }PreparedStatement對象
PreparedStatement 可以防止SQL注入 ,效率更高。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-g2bWtm8m-1609070543587)(C:\Users\王東梁\AppData\Roaming\Typora\typora-user-images\image-20201227170521886.png)]
package com.kuang.lesson03; import com.kuang.lesson02.utils.jdbcUtils;import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Test01 {public static void main(String[] args) throws SQLException {Connection connection= null;PreparedStatement pstm=null;try {connection = jdbcUtils.getConnection();//區別//使用問好占位符代替參數String sql = "insert into users(id,`NAME`) values(?,?)";pstm = connection.prepareStatement(sql);//預編譯sql,先寫sql然后不執行//手動賦值pstm.setInt(1,6);pstm.setString(2,"SANJIN");//執行int i = pstm.executeUpdate();if (i>0){System.out.println("插入成功");}} catch (Exception e) {e.printStackTrace();}finally {jdbcUtils.release(connection,pstm,null);}} }防止SQL注入本質,傳遞字符 帶有“ ”,轉義字符會被轉義
總結
以上是生活随笔為你收集整理的SQL注入问题及预防方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql---批量插入数据:100w条
- 下一篇: MySQL(笔记)