C# 檢查字符串,防SQL注入攻擊
這個(gè)例子里暫定為=號(hào)和'號(hào)
bool CheckParams(params object[] args)
{
string[] Lawlesses={"=","'"};//在這里還可以寫要過濾的字符串
if(Lawlesses==null||Lawlesses.Length<=0)return true;
//構(gòu)造正則表達(dá)式,例:Lawlesses是=號(hào)和'號(hào),則正則表達(dá)式為 .*[=}'].* (正則表達(dá)式相關(guān)內(nèi)容請(qǐng)見MSDN)
//另外,由于我是想做通用而且容易修改的函數(shù),所以多了一步由字符數(shù)組到正則表達(dá)式,實(shí)際使用中,直接寫正則表達(dá)式亦可;
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)//如果是一個(gè)集合,則檢查集合內(nèi)元素是否字符串,是字符串,就進(jìn)行檢查
{
foreach(object obj in (ICollection)arg)
{
if(obj is string)
{
if(Regex.Matches(obj.ToString(),str_Regex).Count>0)
return false;
}
}
}
}
return true;
}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注