使用druid連接池,配置sql防火牆發現的sql注入問題

最近在使用druid連接池,同時也配置了web和spring的關聯監控,檢測到select * from tables param like #{param1} “%”的語句被攔截了。做個筆記。

解決方法有兩種:
一、 select * from tables param like concat(${param1},”%”)。
二、傳入 參數的時候動態拼接 param1=param1+”%”;
select * from tables param like #{param1}。

Mybatis3 防止SQL注入

#{xxx},使用的是PreparedStatement,會有類型轉換,所以比較安全;

${xxx},使用字符串拼接,可以SQL注入;

like查詢不小心會有漏動,正確寫法如下:
Mysql: select * from tables where param like concat(‘%’, #{param1}, ‘%’)
Oracle: select * from t_user where param like ‘%’ || #{param1} || ‘%’
SQLServer: select * from t_user where param like ‘%’ + #{param1} + ‘%’

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章