成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

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

2010-08-28 10:49:09來源:西部e網作者:

SQL注入式攻擊是利用是指利用設計上的漏洞,在目標服務器上運行Sql命令以及進行其他方式的攻擊
動態生成Sql命令時沒有對用戶輸入的數據進行驗證是Sql注入攻擊得逞的主要原因。
比如:
 如果你的查詢語句是select * from admin where username='"&user&"' and password='"&pwd&"'"

 那么,如果我的用戶名是:1' or '1'='1
 那么,你的查詢語句將會變成:
 select * from admin where username='1 or '1'='1' and password='"&pwd&"'"
 這樣你的查詢語句就通過了,從而就可以進入你的管理界面。

所以防范的時候需要對用戶的輸入進行檢查。特別式一些特殊字符,比如單引號,雙引號,分號,逗號,冒號,連接號等進行轉換或者過濾。

需要過濾的特殊字符及字符串有:
   net user
   xp_cmdshell
   /add
   exec master.dbo.xp_cmdshell
   net localgroup administrators
   select
   count
   Asc
   char
   mid
   '
   :
   "
   insert
   delete from
   drop table
   update
   truncate
   from
   %

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;

關鍵詞:C#

贊助商鏈接:

主站蜘蛛池模板: 色达县| 富蕴县| 民和| 左贡县| 菏泽市| 志丹县| 团风县| 错那县| 惠水县| 青州市| 永和县| 武安市| 伽师县| 麻阳| 正阳县| 广昌县| 全州县| 普宁市| 大安市| 常山县| 普格县| 丰镇市| 永昌县| 铜山县| 通许县| 定远县| 河曲县| 右玉县| 视频| 新乐市| 安国市| 雷波县| 宝应县| 宜兰市| 湛江市| 岗巴县| 大荔县| 会东县| 文登市| 江永县| 从化市|