日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

025_jdbc-mysql-Statement的sql注入问题

發布時間:2025/4/17 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 025_jdbc-mysql-Statement的sql注入问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 新建一個JDBCStatementProblem工程, 使用我們之前的JDBCUtil.java和jdbc.properties屬性文件, 以及UserDao

2. 修改UserDaoImpl.java

package com.lywgames.dao.impl;import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.lywgames.dao.UserDao; import com.lywgames.util.JDBCUtil;public class UserDaoImpl implements UserDao {public void login(String username, String password) {Connection conn = null; Statement st = null;ResultSet rs = null;try {// 1.獲取連接對象conn = JDBCUtil.getConn(); // 2.創建statement, 跟數據庫打交道, 一定需要這個對象st = conn.createStatement();// 3.執行查詢sql, 獲取ResultSet結果集String sql = "select * from user where username='"+ username +"' and password='"+ password +"'";System.out.println(sql);rs = st.executeQuery(sql);// 4.使用ResultSet結果集遍歷if(rs.next()){System.out.println("登錄成功");}else{System.out.println("登錄失敗");}} catch (SQLException e) {e.printStackTrace();} finally {// 5.釋放資源JDBCUtil.release(conn, st, rs);}} }

3. 輸入任意用戶名和密碼, 在密碼處拼接1=1, 運行程序, 居然登錄成功了。

4. Statement執行, 其實是拼接sql語句的。 先拼接sql語句, 然后在一起執行。如果變量里面帶有了數據庫的關鍵字, 那么一并認為是關鍵字, 不認為是普通的字符串。?這里拼接 or 1=1, 永遠為真, 返回登錄成功。

總結

以上是生活随笔為你收集整理的025_jdbc-mysql-Statement的sql注入问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。