天天看點

.net 通用防注入代碼

.net 通用防注入代碼

using System;

.net 通用防注入代碼
.net 通用防注入代碼

namespace web.comm

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

{

.net 通用防注入代碼
.net 通用防注入代碼

    /**//// <summary>

.net 通用防注入代碼

    /// ProcessRequest 的摘要說明。

.net 通用防注入代碼

    /// </summary>

.net 通用防注入代碼

    public class ProcessRequest

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

        public ProcessRequest()

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

            //

.net 通用防注入代碼

            // TODO: 在此處添加構造函數邏輯

.net 通用防注入代碼
.net 通用防注入代碼

        }

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

        SQL注入式攻擊代碼分析#region SQL注入式攻擊代碼分析

.net 通用防注入代碼
.net 通用防注入代碼

        /**//// <summary>

.net 通用防注入代碼

        /// 處理使用者送出的請求

.net 通用防注入代碼

        /// </summary>

.net 通用防注入代碼

        public static void StartProcessRequest()

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

//            System.Web.HttpContext.Current.Response.Write("<script>alert('dddd');</script>");

.net 通用防注入代碼

            try

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

                string getkeys = "";

.net 通用防注入代碼

                //string sqlErrorPage = System.Configuration.ConfigurationSettings.AppSettings["CustomErrorPage"].ToString();

.net 通用防注入代碼

                if (System.Web.HttpContext.Current.Request.QueryString != null)

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

                    for(int i=0;i<System.Web.HttpContext.Current.Request.QueryString.Count;i++)

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

                        getkeys = System.Web.HttpContext.Current.Request.QueryString.Keys[i];

.net 通用防注入代碼

                        if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys],0))

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

                            //System.Web.HttpContext.Current.Response.Redirect (sqlErrorPage+"?errmsg=sqlserver&sqlprocess=true");

.net 通用防注入代碼

                            System.Web.HttpContext.Current.Response.Write("<script>alert('請勿非法送出!');history.back();</script>");

.net 通用防注入代碼

                            System.Web.HttpContext.Current.Response.End();

.net 通用防注入代碼

                        }

.net 通用防注入代碼

                    }

.net 通用防注入代碼

                }

.net 通用防注入代碼

                if (System.Web.HttpContext.Current.Request.Form != null)

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

                    for(int i=0;i<System.Web.HttpContext.Current.Request.Form.Count;i++)

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

                        getkeys = System.Web.HttpContext.Current.Request.Form.Keys[i];

.net 通用防注入代碼

                        if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys],1))

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

            }

.net 通用防注入代碼

            catch

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

                // 錯誤處理: 處理使用者送出資訊!

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

        /// 分析使用者請求是否正常

.net 通用防注入代碼
.net 通用防注入代碼

        /// <param name="Str">傳入使用者送出資料</param>

.net 通用防注入代碼

        /// <returns>傳回是否含有SQL注入式攻擊代碼</returns>

.net 通用防注入代碼

        private static bool ProcessSqlStr(string Str,int type)

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

            string SqlStr;

.net 通用防注入代碼
.net 通用防注入代碼

            if(type == 1)

.net 通用防注入代碼

                SqlStr = "exec |insert |select |delete |update |count |chr |mid |master |truncate |char |declare ";

.net 通用防注入代碼

            else

.net 通用防注入代碼

                SqlStr = "'|and|exec|insert|select|delete|update|count|*|chr|mid|master|truncate|char|declare";

.net 通用防注入代碼
.net 通用防注入代碼

            bool ReturnValue = true;

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

                if (Str != "")

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

                    string[] anySqlStr = SqlStr.Split('|');

.net 通用防注入代碼

                    foreach (string ss in anySqlStr)

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

                        if (Str.IndexOf(ss)>=0)

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

                            ReturnValue = false;

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

                ReturnValue = false;

.net 通用防注入代碼
.net 通用防注入代碼

            return ReturnValue;

.net 通用防注入代碼
.net 通用防注入代碼

        #endregion

.net 通用防注入代碼
.net 通用防注入代碼
.net 通用防注入代碼

    }

.net 通用防注入代碼

}

.net 通用防注入代碼