為了防止用戶通過傳遞非法字符而達到SQL注入攻擊的目的,我們必須想辦法過濾掉用戶輸入的非法字符,下面給出在C#中實現過濾非法字符的源代碼,供大家參考。
在這個例子里僅僅對等號=和單引號'進行檢查和過濾,其它非法字符可以用同樣的方法來實現。
首先定義一個檢查函數
bool CheckParams(params object[] args)
{
string[] Lawlesses={"=","'"};
if(Lawlesses==null||Lawlesses.Length<=0)return true;
//構造正則表達式,例:Lawlesses是=號和'號,則正則表達式為 .*[=}'].*
//另外,由于我是想做通用而且容易修改的函數,所以多了一步由字符數組到正則表達式,實際使用中,直接 寫正則表達式亦可;
string str_Regex=".*[";
for(int i=0;i< Lawlesses.Length-1;i++)
str_Regex+=Lawlesses[i]+"|";
str_Regex+=Lawlesses[Lawlesses.Length-1]+"].*";
//
foreach(object arg in args)
{
if(arg is string)//如果是字符串,直接檢查
{
if(Regex.Matches(arg.ToString(),str_Regex).Count>0)
return false;
}
else if(arg is ICollection)//如果是一個集合,則檢查集合內元素是否字符串,是字符串,就進行檢查
{
foreach(object obj in (ICollection)arg)
{
if(obj is string)
{
if(Regex.Matches(obj.ToString(),str_Regex).Count>0)
return false;
}
}
}
}
return true;
}
我們用這個函數來檢查傳入的地址中是否含有非法字符即可。
新聞熱點
疑難解答