什么是sql注入?如何有效防止sql注入?


一、什么是sql注入

  利用程序員的代碼bug,將輸入的參數繞過校驗並在系統中當做代碼運行,從而攻擊系統。

二、如何避免sql注入

1.對sql語句進行預編譯

  PreparedStatement類可以對sql語句進行預編譯,那么傳入的參數只會被當做參數而不會被當做代碼去運行。

2.存儲過程  

  存儲過程是被編譯后存儲在數據庫中的,所以它不會有sql注入的隱患。

3.mybatis框架可避免sql注入

  mybatis進行參數傳遞的占位符有兩種#{}和${},#{}在進行參數傳遞時會先進行sql編譯然后再替換參數,所以不會有sql注入的問題,${}進行參數傳遞時會先拼接sql然后進行sql編譯,會有安全隱患。因此非特殊情況,盡量使用#{}進行參數傳遞。

4.mybatis中like的安全風險

  select * from test clomn like '%${filed}%'. 該sql語句有注入風險,改為select * from test clomn like concat('%',#{filed},'%')。

5.入參的安全校驗

  前后端可對輸入的參數進行特殊字符過濾,避免別有用心的參數進入。


免責聲明!

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



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