C# 檢查字符串,防SQL注入攻擊
這個例子裏暫定爲=號和'號
bool CheckParams(params object[] args)
{
string[] Lawlesses={"=","'"};
if(Lawlesses==null||Lawlesses.Length<=0)return true;
//構造正則表達式,例:Lawlesses是=號和'號,則正則表達式爲 .*[=}'].* (正則表達式相關內容請見MSDN)
//另外,由於我是想做通用而且容易修改的函數,所以多了一步由字符數組到正則表達式,實際使用中,直接寫正則表達式亦可;
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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.