什麼是SQL注入?帶你從零開始認識SQL注入

來源:互聯網
上載者:User
從零開始認識SQL注入 ,什麼是SQL注入?sql注入就是本來我只有我能操作資料庫,本來只是讓你輸入內容就走,而你卻輸入命令,從而在我不知情下操作資料庫

SQL注入

1.什麼是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可以避免注入攻擊;

相關文章:

一個自認為很安全的PHP防SQL注入 求破解

深入瞭解SQL注入和預防措施

相關視頻:

防禦sql注入-PHP實戰商城開發視頻教

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.