天天看點

前背景互動中特殊字元的處理

一、特殊字元需要做處理

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 '/' ;