zoukankan      html  css  js  c++  java
  • 在Global.asax中根据请求路径判断是否可以访问。。。我没思路只好这样了

      1 using System;
      2 using System.Web;
      3 using System.Collections;
      4 using System.ComponentModel;
      5 using System.Web.SessionState;
      6 using System.Configuration;
      7 using System.Data;
      8 using System.IO;
      9 using System.Web.Security;
     10 using LTP.Accounts.Bus;
     11 namespace cxyy.Web 
     12 {
     13     /// <summary>
     14     /// Global 的摘要说明。
     15     /// </summary>
     16     public class Global : System.Web.HttpApplication, IRequiresSessionState
     17     {
     18         /// <summary>
     19         /// 必需的设计器变量。
     20         /// </summary>
     21         private System.ComponentModel.IContainer components = null;
     22 
     23         public Global()
     24         {
     25             InitializeComponent();
     26         }    
     27         
     28         protected void Application_Start(Object sender, EventArgs e)
     29         {        
     30  
     31         }
     32  
     33         protected void Session_Start(Object sender, EventArgs e)
     34         {
     35             Session["Style"]=1;
     36         }
     37         protected void Application_BeginRequest(Object sender, EventArgs e)
     38         {
     39             StartProcessRequest();
     40         }
     41         protected void Application_EndRequest(Object sender, EventArgs e)
     42         {
     43         }
     44         protected void Application_AcquireRequestState(Object sender, EventArgs e)
     45         {
     46             HttpApplication happ = (HttpApplication)sender;
     47             HttpContext context = happ.Context;
     48             string url = context.Request.RawUrl;
     49             string path = url.Split('/')[1];
     50             switch (path)
     51             {
     52                 case "user":
     53                 case "User":
     54 
     55                     if (HttpContext.Current.Session != null)
     56                     {
     57                         if (HttpContext.Current.Session["user"== null)
     58                         {
     59                             Response.Redirect("/Register/index.aspx?1111111111111");
     60                         }
     61                     }
     62                     else
     63                     {
     64                         Response.Redirect("/Register/index.aspx?3333333333333");
     65                     }
     66                     break;
     67                 case "admin":
     68                     break;
     69                 default:
     70                     break;
     71             }
     72         }
     73         protected void Application_AuthenticateRequest(Object sender, EventArgs e)
     74         {
     75            
     76         }
     77         protected void Application_Error(Object sender, EventArgs e)
     78         {
     79             
     80         }
     81         protected void Session_End(Object sender, EventArgs e)
     82         {        
     83             
     84         }
     85         protected void Application_End(Object sender, EventArgs e)
     86         {
     87         }
     88             
     89         #region Web 窗体设计器生成的代码
     90         /// <summary>
     91         /// 设计器支持所需的方法 - 不要使用代码编辑器修改
     92         /// 此方法的内容。
     93         /// </summary>
     94         private void InitializeComponent()
     95         {    
     96             this.components = new System.ComponentModel.Container();
     97         }
     98         #endregion
     99         #region SQL注入式攻击代码分析 
    100         /// <summary> 
    101         /// 处理用户提交的请求 
    102         /// </summary> 
    103         private void StartProcessRequest() 
    104         { 
    105             try 
    106             { 
    107                 string getkeys = ""
    108                 string sqlErrorPage = "/default.aspx";//如果有非法参数,转向的错误提示页面 
    109                 if (System.Web.HttpContext.Current.Request.QueryString != null
    110                 { 
    111                     for (int i = 0; i < System.Web.HttpContext.Current.Request.QueryString.Count; i++
    112                     { 
    113                         getkeys = System.Web.HttpContext.Current.Request.QueryString.Keys[i]; 
    114                         if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys])) 
    115                         { 
    116                             System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage); 
    117                             System.Web.HttpContext.Current.Response.End(); 
    118                         } 
    119                     } 
    120                 } 
    121                 if (System.Web.HttpContext.Current.Request.Form != null
    122                 { 
    123                     for (int i = 0; i < System.Web.HttpContext.Current.Request.Form.Count; i++
    124                     { 
    125                         getkeys = System.Web.HttpContext.Current.Request.Form.Keys[i]; 
    126                         if (getkeys == "__VIEWSTATE"continue
    127                         if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys])) 
    128                         { 
    129                             System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage); 
    130                             System.Web.HttpContext.Current.Response.End(); 
    131                         } 
    132                     } 
    133                 } 
    134                 if (System.Web.HttpContext.Current.Request.Cookies != null
    135                 { 
    136                     for (int i = 0; i < System.Web.HttpContext.Current.Request.Cookies.Count; i++
    137                     { 
    138                         getkeys = System.Web.HttpContext.Current.Request.Cookies.Keys[i]; 
    139                         if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Cookies[getkeys].ToString())) 
    140                         { 
    141                             System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage); 
    142                             System.Web.HttpContext.Current.Response.End(); 
    143                         } 
    144                     } 
    145                 } 
    146             } 
    147             catch 
    148             { 
    149                 // 错误处理: 处理用户提交信息! 
    150             } 
    151         } 
    152         /// <summary> 
    153         /// 分析用户请求是否正常 
    154         /// </summary> 
    155         /// <param name="Str">传入用户提交数据 </param> 
    156         /// <returns>返回是否含有SQL注入式攻击代码 </returns> 
    157         private bool ProcessSqlStr(string Str) 
    158         { 
    159             bool ReturnValue = true
    160             try 
    161             { 
    162             if (Str.Trim() != ""
    163             { 
    164             string SqlStr = "and |exec |insert |select |delete |update |count |* |chr |mid |master |truncate |char |declare"
    165 
    166             string[] anySqlStr = SqlStr.Split('|'); 
    167             foreach (string ss in anySqlStr) 
    168             { 
    169             if (Str.ToLower().IndexOf(ss) >= 0
    170             { 
    171             ReturnValue = false
    172             break
    173             } 
    174             } 
    175             } 
    176             } 
    177             catch 
    178             { 
    179             ReturnValue = false
    180             } 
    181             return ReturnValue; 
    182         } 
    183         #endregion
    184 
    185     }
    186 }
    187 

    我不知道别的方法,开始自己写个过滤器,然后注册,感觉也蛮好的哈,不过都是网上摘的,还是系统原来自带的文件来的感觉踏实。。。不知道会不会有错误,先这么写着吧

    下面是抄的

    前段时间因为一特定需求写了下面代码。需求如下:在用户访问本站所有aspx页面时,首先判断用户Session["login"]是否存在,如果不存在,说明该用户未登陆,要让该用户跳转到指定的页面。所以想写一个Session的过滤器,思前想后应该写一个继承IHttpModule的处理类。试验了几种方式发现只有将方法加在.AcquireRequestState中才能读取session。

    共享代码如下 MyModule.cs

     1 using System;
     2 using System.Data;
     3 using System.Configuration;
     4 using System.Web;
     5 using System.Web.Security;
     6 using System.Web.UI;
     7 using System.Web.UI.WebControls;
     8 using System.Web.UI.WebControls.WebParts;
     9 using System.Web.UI.HtmlControls;
    10 
    11 
    12 /// <summary>
    13 /// MyModule 的摘要说明
    14 /// </summary>
    15 public class MyModule:IHttpModule
    16 {
    17     public MyModule()
    18     {
    19         //
    20         // TODO: 在此处添加构造函数逻辑
    21         //
    22     }
    23 
    24     #region IHttpModule 成员
    25 
    26     public void Dispose()
    27     {
    28         throw new Exception("The method or operation is not implemented.");
    29     }
    30 
    31     public void Init(HttpApplication context)
    32     {
    33         context.AcquireRequestState += new EventHandler(application_AcquireRequestState);
    34     }
    35     public void application_AcquireRequestState(object sender, EventArgs e)
    36     {
    37         HttpApplication app = (HttpApplication)sender;
    38 
    39         
    40         if (app.Context.Session["userName"== null || app.Context.Session["userName"].ToString().Trim() == "")
    41         {
    42             app.Context.Server.Transfer("login.aspx");
    43         }
    44     }
    45     #endregion
    46 
    47  
    48 
    49 webconfig 配置如下 
    50 
    51 <system.web>
    52 
    53         <httpModules>
    54                   <add name="myModule" type="MyModule"/>
    55           </httpModules> 
    56 
    57 </system.web>
    58 

     

  • 相关阅读:
    Windows激活客户端 已停止工作
    sevices.msc灰色处理办法
    日期求星期(java)蓝桥杯
    全排列筛选(java)
    日期类的使用(java)蓝桥杯
    蓝桥杯加法变乘法(java)
    搭积木(java)蓝桥杯
    Ftp commands and options
    随机long(Random long/NextLong)
    Windows Azure Storage Explorer List
  • 原文地址:https://www.cnblogs.com/pipizhu/p/1615100.html
Copyright © 2011-2022 走看看