為什要使用預編譯SQL?(轉)


本文轉自https://www.cnblogs.com/zouqin/p/5314827.html

今天在研發部技術大牛的指點下,我終於明白了為什么要使用SQL預編譯的形式執行數據庫JDBC:

  

  然而總所周知,這種方式極有可能發生SQL注入攻擊,那么什么是SQL注入攻擊呢?

  

  如上圖,我們想刪除一條id = ' sk001 ' 的數據。這是理想情況下,但是如果用戶惡意進行SQL注入攻擊的話,比如這樣

  

  

  如果用戶像以上者中情況注入SQL的話,相應的對我們的數據庫將產生極大的漏洞和極大的安全問題,那么為什么我說預編譯可以防范SQL注入攻擊呢?

  

  這種方式能防范SQL注入的原理是在SQL參數未注入之前,提前對SQL語句進行預編譯,而其后注入的參數將不會再進行SQL編譯。也就是說其后注入進來的參數系統將不會認為它會是一條SQL語句,而默認其是一條一個參數。

  所以回答標題的問題,為什么要使用SQL預編譯來執行數據庫JDBC?

    就是防范SQL注入攻擊~

  以上屬於個人見解,不足之處請多多指教

 

3.order by修復建議

select * from userorder by #{name} desc  /*有問題sql*/

因為預編譯機制只能處理查詢參數,此處顯然不是查詢參數,需要開發人員自己處理。所以只能這樣拼接:

select * from userorder by ${name} desc 

 

 

3.order by修復建議

 

select * from userorder by #{name} desc  /*有問題sql*/

 

因為預編譯機制只能處理查詢參數,此處顯然不是查詢參數,需要開發人員自己處理。所以只能這樣拼接:

 

select * from userorder by ${name} desc 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM