paip.SQL特殊字元逸出字元處理

來源:互聯網
上載者:User

paip.SQL特殊字元逸出字元處理

 

作者Attilax
, 1466519819@qq.com

  我們都知道SQL Server查詢過程中,單引號“'”是特殊字元,所以在查詢的時候要轉換成雙單引號“''”。

 

當然最好的方案是參數化查詢。但是原有項目當更改量太大的的時候,使用轉義的方案也不錯..

 

 

 

但這隻是特殊字元的一個,在實際項目中,發現對於like操作還有以下特殊字元:底線“_”,百分比符號“%”,方括弧“[]”以及尖號“^”。

其用途如下:

底線:用於代替一個任一字元(相當於Regex中的 ?

百分比符號:用於代替任意數目的任一字元(相當於Regex中的 *

方括弧:用於轉義(事實上只有左方括弧用於轉義,右方括弧使用最近優先原則匹配最近的左方括弧)

尖號:用於排除一些字元進行匹配(這個與Regex中的一樣)

 

 

******************過濾方法

在實際進行處理的時候,對於=操作,我們一般只需要單引號替換為雙引號:' -> ''

在實際處理中,對於=操作,參數為字串,比如說=‘’,只需要單引號替換為雙引號這樣就可以了。

如果是數字一類的,直接應用轉數字函數就可以了。。或者需要對UNICODE首碼如%,char等也要進行轉義.

 

對於like操作,需要進行以下替換(注意順序也很重要)
[ -> [[] (這個必須是第一個替換的!!)
% -> [%] (這裡%是指希望匹配的字元本身包括的%而不是專門用於匹配的萬用字元)
_ -> [_]
^ -> [^]

 

另外限制參數長度也是個好辦法,一般限制在20位以內就可以了.

 

參考:

SQL Server查詢中特殊字元的處理方法

SQL注入中繞過'(單引號)限制繼續注入

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.