1. 程式人生 > >Dao層寫資料庫語句使用IN遇到的問題

Dao層寫資料庫語句使用IN遇到的問題

Dao層語句如下:
@Select("SELECT COUNT( * ) FROM (( `comp` `c` LEFT JOIN `comp_value` `cv` ON ( ( `c`.`comp_id` = `cv`.`comp_id` ) ) )" +
"LEFT JOIN `listing` `l` ON ( ( `cv`.`listing_no` = `l`.`listing_no` ) ) ) " +
"WHERE( `c`.`comp_id` IN ( SELECT `comp_id` FROM `job_comp` WHERE job_comp.job_id IN (${jobIds}
)))") int countCompListing2(@Param("jobIds") String jobIds);

(jobIds是一個用“,”分隔的字串)

標紅的位置,如果使用正常的傳參形式#{jobIds}會只取字串中第一個數字,後面的都不會取到,所以使用了"$"這種格式,查到用美元符號會容易導致sql注入攻擊問題,暫時還不太明白會怎麼攻擊,以後有好的辦法再進行修改