为什么不能在SQL拼接模糊匹配符号
生活随笔
收集整理的這篇文章主要介紹了
为什么不能在SQL拼接模糊匹配符号
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
答案:因為會引起SQL注入
什么是SQL注入
SQL注入就是將原本的SQL語句邏輯結構改變,使得SQL語句的執行結果和原本意圖不一一致。
例如:
select * from t_sys_user where name = 'admin' and pasword = '123456'實際查詢時Statement語句執行會將SQL語句按照字符串拼接,結果如下:
“select * from t_sys_user where name = " +“admin” + " and pasword = " + 123456” ;
如果我們把 or 1 = 1 作為 pasword 的參數傳入,Statement執行查詢的時SQL變成:
"select * from t_sys_user where name = " +“admin” + " and pasword = " + “or 1 = 1” ;
根據SQL編譯順序,如果where 后面有or條件的話,則or自動會把左右的查詢條件分開,“or 1 = 1” 條件永遠成立, 所以,前面的where 、and 條件已經不起作用了。
如何避免SQL注入
在Mybatis中 #{} 是預編譯處理, KaTeX parse error: Expected 'EOF', got '#' at position 27: …編譯處理。Mybatis在處理#?{}時,會將SQL中的#{}替…{}時,就是把${}替換成變量的值,所以編寫SQL時要避免使用 ${}賦值 。
總結
以上是生活随笔為你收集整理的为什么不能在SQL拼接模糊匹配符号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mybatis一级缓存、二级缓存
- 下一篇: linux 系统 安装 nginx 服务