正規表示式防止SQL注入

2021-04-13 07:15:03 字數 1007 閱讀 8337

本來對正規表示式不是很了解,但由於專案需要,專案主要沒有採用儲存過程方式來儲存 sql語句,所以很有可能被黑客用sql注入攻擊,現在就在網上找了找解決辦法,在業務層來過濾sql語句,防止sql注入攻擊,主要是採用了正規表示式,因為正規表示式對字串的操作是很強大的.

首先用乙個validate()類來封裝正規表示式和相關操作:

//驗證是否有sql注入字元

private bool validatequery(hashtable queryconditions)

;#endregion

//構造正規表示式

string str_regex = ".*("

for (int i = 0; i < strbadchar.length - 1; i++)

str_regex += strbadchar[strbadchar.length - 1] + ").*"

//避免查詢條件中_list情況

foreach (string str in queryconditions.keys)

string tempstr = queryconditions[str].tostring();

if (regex.matches(tempstr.tostring(), str_regex).count > 0)

}return false;

}queryconditions 是乙個hashtable,用於傳入查詢條件,hashtable中的鍵值(key)為:@name,相對應sql中的引數,那value則對應為引數的實際值了.

正規表示式的應用主要是按這樣的規律來過濾字串的:

.*(and|exec|select|update|or|'|''|).*   //  str_regex

核心函式主要是: regex.matches(tempstr.tostring(), str_regex).

要是在 tempstr 字串中含有非法字元, 則函式的count值將大於0

好了,就這樣就可以判斷是否含有sql注入攻擊字元了.

使用正規表示式來防止SQL注入

只要幾個字元就能防sql注入 正規表示式 前天朋友的 被sql掛馬了,好慘,整個資料庫不能用了。因為裡面全是指令碼。崩潰 今兒他總算是把資料庫還原完事了 還好有急時備份 之後打 和我說了這事兒。忍不住建意他在所有有使用者輸入的地方進行驗證,引用一句名言 所有輸入都是罪惡的 關於防注入,是很平常的話題...

正規表示式防止SQL注入 C 版的

本來對正規表示式不是很了解,但由於專案需要,專案主要沒有採用儲存過程方式來儲存 sql語句,所以很有可能被黑客用sql注入攻擊,現在就在網上找了找解決辦法,在業務層來過濾sql語句,防止sql注入攻擊,主要是採用了正規表示式,因為正規表示式對字串的操作是很強大的.首先用乙個validate 類來封裝...

sql正規表示式 SQL中的正規表示式

sql正規表示式 sql中的正規表示式 sql的查詢語句中,有時會需要引進正規表示式為其複雜搜尋指定模式。下面給出一些 regexp 在mysql 語句中應用 非全部 1 匹配字串的開始部分。mysql select fo nfo regexp fo 0mysql select fofo regex...