一、特殊字元需要做處理
1. 單引号
背景傳回的json中包含單引号,可能會引起前端頁面js報錯,可以在前端對單引号進行轉義,或者在背景進行轉義,再生成json傳回到前端。
背景根據前端傳遞的資料拼接sql時,單引号會導緻sql語句報錯,且不推薦直接使用字元串進行sql拼接,可以使用JDBC中的類,通過占位符傳遞參數,防止sql注入。
如果sql中有單引号導緻sql語句報錯,可以将兩個單引号進行轉義,如:select * from table where column like '''' ;
2. 百分号、下劃線
前端get請求拼接的url中,如果有百分号,需要對百分号進行轉義,否則背景将取不到該百分号,可以使用'%25'替換'%',如此,背景可以根據參數直接擷取到%。
前端傳遞某個參數的值為%,如果背景不對它進行處理,直接作為條件進行模糊查詢,将會把資料庫中所有非空的資料查詢出來; 如果參數的值為_,背景不對它進行處理,直接作為條件進行模糊查詢,會比對到資料庫中該字段所有單個字元的資料。
如果遇到百分号、下劃線作為查詢條件,可以使用/+百分号或下劃線進行轉義,在本項條件後加 escape '/' 即可,如:
select * from tabl where column like '%/%%' escape '/' ;
select * from tabl where column like '%/_%' escape '/' ;