java中預先處理PrepareStatement為什麼能起到防止SQL注入的作用??!!

來源:互聯網
上載者:User

標籤:preparestatement   java中預先處理   預先處理語句為什麼能防止sql注入   預防sql注入   預先處理防止sql注入   

       大家都知道,java中JDBC中,有個預先處理功能,這個功能一大優勢就是能提高執行速度尤其是多次操作資料庫的情況,再一個優勢就是預防SQL注入,嚴格的說,應該是預防絕大多數的SQL注入。

       用法就是如下邊所示:

String sql="update cz_zj_directpayment dp"+ "set dp.projectid = ? where dp.payid= ?";try {PreparedStatement pset_f = conn.prepareStatement(sql);pset_f.setString(1,inds[j]);pset_f.setString(2,id);pset_f.executeUpdate(sql_update);}catch(Exception e){//e.printStackTrace();logger.error(e.message());}


       那為什麼它這樣處理就能預防SQL注入提高安全性呢?其實是因為SQL語句在程式運行前已經進行了先行編譯,在程式運行時第一次操作資料庫之前,SQL語句已經被資料庫分析,編譯和最佳化,對應的執行計畫也會緩衝下來並允許資料庫已參數化的形式進行查詢,當運行時動態地把參數傳給PreprareStatement時,即使參數裡有敏感字元如 or ‘1=1‘也資料庫會作為一個參數一個欄位的屬性值來處理而不會作為一個SQL指令,如此,就起到了SQL注入的作用了!

轉載請註明—Java我人生(陳磊興)   原文出處:http://blog.csdn.net/chenleixing/article/details/44024095

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

java中預先處理PrepareStatement為什麼能起到防止SQL注入的作用??!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.