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;  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章