<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        c#.net全站防止SQL注入類的代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:41:32
        文檔

        c#.net全站防止SQL注入類的代碼

        c#.net全站防止SQL注入類的代碼: 代碼如下:using System;using System.Collections.Generic;using System.Linq;using System.Web; /// <summary>/// 防SQL注入檢查器/// </summary>public class SqlChecker{ //當前請求對象 p
        推薦度:
        導讀c#.net全站防止SQL注入類的代碼: 代碼如下:using System;using System.Collections.Generic;using System.Linq;using System.Web; /// <summary>/// 防SQL注入檢查器/// </summary>public class SqlChecker{ //當前請求對象 p

        代碼如下:
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;

        /// <summary>
        /// 防SQL注入檢查器
        /// </summary>
        public class SqlChecker
        {
            //當前請求對象
            private HttpRequest request;
            //當前響應對象
            private HttpResponse response;
            //安全Url,當出現Sql注入時,將導向到的安全頁面,如果沒賦值,則停留在當前頁面
            private string safeUrl = String.Empty;

            //Sql注入時,可能出現的sql關鍵字,可根據自己的實際情況進行初始化,每個關鍵字由'|'分隔開來
            //private const string StrKeyWord = @"select|insert|delete|from|count(|drop table|update|truncate|asc(|mid(|char(|xp_cmdshell|exec master|netlocalgroup administrators|:|net user|""|or|and";
            private const string StrKeyWord = @"select|insert|delete|from|drop table|update|truncate|exec master|netlocalgroup administrators|:|net user|or|and";
            //Sql注入時,可能出現的特殊符號,,可根據自己的實際情況進行初始化,每個符號由'|'分隔開來
            //private const string StrRegex = @"-|;|,|/|(|)|[|]|}|{|%|@|*|!|'";
            private const string StrRegex = @"=|!|'";
            public SqlChecker()
            {
                //
                // TODO: 在此處添加構造函數邏輯
                //
            }
            /// <summary>
            /// 由此構造函數創建的對象,在驗證Sql注入之后將停留在原來頁面上
            /// </summary>
            /// <param name="_request">當前請求的 Request 對象</param>
            /// <param name="_response">當前請求的 Response 對象</param>
            public SqlChecker(HttpRequest _request, HttpResponse _response)
            {
                this.request = _request;
                this.response = _response;
            }
            /// <summary>
            /// 由此構造函數創建的對象,在驗證Sql注入之后將請求將導向由 _safeUrl 指定的安全url頁面上
            /// </summary>
            /// <param name="_request">當前請求的 Request 對象</param>
            /// <param name="_response">當前請求的 Response 對象</param>
            /// <param name="_safeUrl">驗證Sql注入之后將導向的安全 url</param>
            public SqlChecker(HttpRequest _request, HttpResponse _response, string _safeUrl)
            {
                this.request = _request;
                this.response = _response;
                this.safeUrl = _safeUrl;
            }
            /// <summary>
            /// 只讀屬性 SQL關鍵字
            /// </summary>
            public string KeyWord
            {
                get
                {
                    return StrKeyWord;
                }
            }
            /// <summary>
            /// 只讀屬性過濾特殊字符
            /// </summary>
            public string RegexString
            {
                get
                {
                    return StrRegex;
                }
            }
            /// <summary>
            /// 當出現Sql注入時需要提示的錯誤信息(主要是運行一些客戶端的腳本)
            /// </summary>
            public string Msg
            {
                get
                {
                    string msg = "<script type='text/javascript'> "
                    + " alert('請勿輸入非法字符!'); ";

                    if (this.safeUrl == String.Empty)
                        msg += " window.location.href = '" + request.RawUrl + "'";
                    else
                        msg += " window.location.href = '" + safeUrl + "'";

                    msg += "</script>";
                    return msg;
                }
            }
            /// <summary>
            /// 檢查URL參數中是否帶有SQL注入的可能關鍵字。
            /// </summary>
            /// <returns>存在SQL注入關鍵字時返回 true,否則返回 false</returns>
            public bool CheckRequestQuery()
            {
                bool result = false;
                if (request.QueryString.Count != 0)
                {
                    //若URL中參數存在,則逐個檢驗參數。
                    foreach (string queryName in this.request.QueryString)
                    {
                        //過慮一些特殊的請求狀態值,主要是一些有關頁面視圖狀態的參數
                        if (queryName == "__VIEWSTATE" || queryName == "__EVENTVALIDATION")
                            continue;
                        //開始檢查請求參數值是否合法
                        if (CheckKeyWord(request.QueryString[queryName]))
                        {
                            //只要存在一個可能出現Sql注入的參數,則直接退出
                            result = true;
                            break;
                        }
                    }
                }
                return result;
            }
            /// <summary>
            /// 檢查提交表單中是否存在SQL注入的可能關鍵字
            /// </summary>
            /// <returns>存在SQL注入關鍵字時返回 true,否則返回 false</returns>
            public bool CheckRequestForm()
            {
                bool result = false;
                if (request.Form.Count > 0)
                {
                    //若獲取提交的表單項個數不為0,則逐個比較參數
                    foreach (string queryName in this.request.Form)
                    {
                        //過慮一些特殊的請求狀態值,主要是一些有關頁面視圖狀態的參數
                        if (queryName == "__VIEWSTATE" || queryName == "__EVENTVALIDATION")
                            continue;
                        //開始檢查提交的表單參數值是否合法
                        if (CheckKeyWord(request.Form[queryName]))
                        {
                            //只要存在一個可能出現Sql注入的參數,則直接退出
                            result = true;
                            break;
                        }
                    }
                }
                return result;
            }
            /// <summary>
            /// 檢查_sword是否包涵SQL關鍵字
            /// </summary>
            /// <param name="_sWord">需要檢查的字符串</param>
            /// <returns>存在SQL注入關鍵字時返回 true,否則返回 false</returns>
            public bool CheckKeyWord(string _sWord)
            {
                bool result = false;
                //模式1 : 對應Sql注入的可能關鍵字
                string[] patten1 = StrKeyWord.Split('|');
                //模式2 : 對應Sql注入的可能特殊符號
                string[] patten2 = StrRegex.Split('|');
                //開始檢查 模式1:Sql注入的可能關鍵字 的注入情況
                foreach (string sqlKey in patten1)
                {
                    if (_sWord.IndexOf(" " + sqlKey) >= 0 || _sWord.IndexOf(sqlKey + " ") >= 0)
                    {
                        //只要存在一個可能出現Sql注入的參數,則直接退出
                        result = true;
                        break;
                    }
                }
                //開始檢查 模式1:Sql注入的可能特殊符號 的注入情況
                foreach (string sqlKey in patten2)
                {
                    if (_sWord.IndexOf(sqlKey) >= 0)
                    {
                        //只要存在一個可能出現Sql注入的參數,則直接退出
                        result = true;
                        break;
                    }
                }
                return result;
            }
            /// <summary>
            /// 執行Sql注入驗證
            /// </summary>
            public void Check()
            {
                if (CheckRequestQuery() || CheckRequestForm())
                {
                    response.Write(Msg);
                    response.End();
                }
            }
        }

        使用說明 :
        代碼如下:

        // 使用時可以根據需要決定是要進行全局性(即針對整個應用程序)的Sql注入檢查
        // ,還是局部性(即在針對某個頁面)的Sql注入檢查


        /*=========== 全局性設置:在Global.asax.cs 中加上以下代碼 =============

        protected void Application_BeginRequest(Object sender, EventArgs e)
        {
        SqlChecker SqlChecker = new SqlChecker(this.Request,this.Response);
        //或 SqlChecker SqlChecker = new SqlChecker(this.Request,this.Response,safeUrl);
        SqlChecker.Check();
        }
         

        /*============ 局部性:在任何時候都可直接用以下代碼來實現Sql注入檢驗 ===============

        SqlChecker SqlChecker = new SqlChecker(this.Request,this.Response);
        //或 SqlChecker SqlChecker = new SqlChecker(this.Request,this.Response,safeUrl);
        SqlChecker.Check();

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        c#.net全站防止SQL注入類的代碼

        c#.net全站防止SQL注入類的代碼: 代碼如下:using System;using System.Collections.Generic;using System.Linq;using System.Web; /// <summary>/// 防SQL注入檢查器/// </summary>public class SqlChecker{ //當前請求對象 p
        推薦度:
        標簽: 類型 net c#
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲一级毛片免费在线观看| 国产亚洲av人片在线观看| 亚洲国产成人久久精品影视| 国产区在线免费观看| 久久久久久久亚洲精品| 一级特黄特色的免费大片视频| gogo全球高清大胆亚洲| 无套内射无矿码免费看黄| 国产jizzjizz免费视频| 免费国产在线精品一区| 亚洲欧洲自拍拍偷精品 美利坚| 人人公开免费超级碰碰碰视频 | 一级成人a免费视频| 亚洲福利在线播放| 一区二区三区免费高清视频| 久久久久无码专区亚洲av| 天黑黑影院在线观看视频高清免费| 国产亚洲婷婷香蕉久久精品| 日韩精品内射视频免费观看| 亚洲欧洲日产国码在线观看| 成人无码区免费视频观看 | 日本精品久久久久久久久免费| 亚洲精品国产自在久久| 国产一级一毛免费黄片| 亚洲黄网在线观看| 日本不卡在线观看免费v| 深夜福利在线视频免费| 久久精品国产亚洲av麻豆 | 青草青草视频2免费观看| 亚洲中文字幕无码一区二区三区| 性xxxx视频免费播放直播| 国产成+人+综合+亚洲专| 国产免费一区二区三区VR| 三上悠亚在线观看免费| 亚洲国产精品美女| 又大又硬又爽免费视频| 国产亚洲免费的视频看| 一级毛片不卡片免费观看| 亚洲av无码专区在线| 亚洲精品国产福利一二区| 最近中文字幕免费2019|