程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C# 檢查字符串,防SQL注入攻擊

C# 檢查字符串,防SQL注入攻擊

編輯:.NET實例教程
這些天,CSDN上討論SQL注入攻擊似乎是如火如荼啊...我也來參合一下..
如下,CheckParams函數,接收參數任意,如參數中有字符串,則對字符串進行檢查,如參數中有集合(如Array之類,總之是實現了ICollection的),則對集合中的字符串元素進行檢查.
大家可根據具體情況來定要過濾的字符,我這個例子裡暫定為=號和'號,實際上我個人認為,過濾了這兩個,似乎要進行SQL注入就已經比較困難了,當然,我對SQL是菜鳥,歡迎高手指正,謝謝.我的郵箱(MSN): [email protected]


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;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved