mysql如何防止sql注入
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                mysql如何防止sql注入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                如果是原生jdbc操作,使用prepareStatement代替代替Statement,因為prepareStatement會預編譯處理,參數用?占位符代替。
如果是mybatis框架,使用#{參數}設置參數,不要用${參數}
為什么mybatis中的#{} 為什么能防止sql注入,${}不能防止sql注入,PreparedStatement能防止sql注入呢?
#{}在mybatis中的底層是運用了PreparedStatement 預編譯。
PreparedStatement 的sql語句是預編譯的,而且語句中使用了占位符(?設置占位符),規定了sql語句的結構。當sql預編譯完后,傳入的參數就僅僅是參數,不會參與sql語句的生成,不能改變sql語句的結構。
而${}則沒有使用預編譯,傳入的參數直接和sql進行拼接,由此會產生sql注入的漏洞。
因此想在sql語句后面加上如“or 1=1”實現sql注入是行不通的。
總結
以上是生活随笔為你收集整理的mysql如何防止sql注入的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 见微知著(一):解析ctf中的pwn--
 - 下一篇: web窗体的内置对象