1. 程式人生 > >Mybatis下的sql注入

Mybatis下的sql注入

以前只知道mybatis框架下,order by後面接的是列名是不能用#{},這樣不起效果,只能用${},這樣的話就可能產生sql注入。後來發現其實還有另外兩種情況也是類似的:

1.order by ${} asc

像這種情況最好的辦法是在java層面上做對映,比如說使用者只能輸入1-5,然後在程式碼層面將其對映為欄位名,然後再使用${}

2.

Select * from news where id in (#{id})  這樣寫會報錯

防範方法:使用mybatis自帶的迴圈指令

select * from news where id in

<foreach collection="ids" item="item" open="("separator="," close=")">#{item} </foreach>

3.模糊查詢

Select * from news where title like ‘%#{title}%’, 這樣寫會報錯

方法方法:  select * from news where tile like concat(‘%’,#{title}, ‘%’)