久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SQL注入指的是什么

132次閱讀
沒有評論

共計 1353 個字符,預計需要花費 4 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

丸趣 TV 小編給大家分享一下 SQL 注入指的是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

SQL 注入 1. 什么是 SQL 注入

看一下下面的案例場景,這是正常情況下的登陸場景:

SQL 注入指的是什么

而當我們使用 用戶名‘:– 的時候,密碼隨便輸入也可以登陸成功↓

SQL 注入指的是什么

這時候對比兩條 sql 就能發現,其實用戶通過在用戶名寫入的 sql 符號將內部 sql 提前結束,并且將后半句檢索條件注釋起來達到免密碼登陸效果。

sql 注入就是本來我只有我能操作數據庫,本來只是讓你輸入內容就走,而你卻輸入命令,從而在我不知情下操作數據庫

2. 漏洞的修復

會產生上門面的情況是因為上面的 sql 是使用動態拼接的方式,所以 sql 傳入的方式可能改變 sql 的語義。

動態拼接就是在 java 中 java 變量和 sql 語句混合使用:select * from user where userName=’”+userName+”’and password =‘”+password”’

所以要使用 preparedStatement 的參數化 sql,通過先確定語義,再傳入參數,就不會因為傳入的參數改變 sql 的語義。(通過 setInt,setString,setBoolean 傳入參數)

3. 參數化 sql 使用案例

 // 建立數據連接
 conn=ds.getConnection();
 //1. 設置 prepareStatement 帶占位符的 sql 語句
 PreparedStatement ptmt = conn.prepareStatement( select * from user where userName = ? and password = ? 
 ptmt.setString(1,  張三  //2. 設置參數
 ptmt.setString(2,  123456 
 rs=ptmt.executeQuery(); 
 while(rs.next()){
 System.out.println( 登陸成功 
 return;
 }
 System.out.println(登陸失敗 

參數化特點:

1. 設置 preparedStatement 帶占位符的 sql 語句

statement 執行 sql 語句的方式:

stmt=conn.createStatement();
rs=stmt.executeQuery(select userName from user

2. 設置參數

PerparedStatement 繼承于 Statement,這里主要使用的使他參數化 sql 的特性。

轉:https://blog.csdn.net/qq_30258957/article/details/78145885

加:1. 都是用來執行 SQL 的 PreparedStatement extends Statement;

2.Statement 適合執行靜態 (無條件)SQL  PreparedStatement 適合執行動態 (有條件)SQL;

3.PreparedStatement 可以避免注入攻擊;

以上是“SQL 注入指的是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計1353字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 香港| 工布江达县| 德惠市| 夏津县| 黔南| 霍山县| 嘉善县| 内乡县| 乐安县| 芮城县| 哈巴河县| 遂宁市| 龙泉市| 宣武区| 唐河县| 邢台县| 嘉定区| 新源县| 哈尔滨市| 綦江县| 滦平县| 宿松县| 红安县| 定结县| 彭水| 呼图壁县| 卓资县| 内江市| 南宁市| 山阳县| 合水县| 平安县| 浪卡子县| 库尔勒市| 米泉市| 新丰县| 黄冈市| 门源| 毕节市| 民权县| 麟游县|