zoukankan      html  css  js  c++  java
  • ASP.NETURL地址防注入过滤问题

    首先在Global.asax.cs里面配置一个 提交事件  不用过滤所有的地址 过滤 GET POST的地址就行了

    /// <summary>
    /// 防止sql注入
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
    //过滤Post参数
    string url = this.Request.Url.ToString();
    if(this.Request.Form.Count>0)
    {
    string filterUrl = FilterUrl(url);
    if (!url.Equals(filterUrl))
    {
    this.Response.Redirect(filterUrl);
    }
    }
    //过滤Get参数
    if(this.Request.QueryString.Count>0)
    {
    string filterUrl = FilterUrl(url);
    if (!url.Equals(filterUrl))
    {
    this.Response.Redirect(filterUrl);
    }
    }
    }
    
     
     
    
    /// <summary>
    /// 过滤特殊字符
    /// </summary>
    /// <param name="url"></param>
    /// <returns></returns>
    private string FilterUrl(string url)
    {
    string replaceStr = url;
    if (!string.IsNullOrEmpty(url))
    {
    replaceStr = replaceStr.ToLower();
    replaceStr = replaceStr.Replace("<", "");
    replaceStr = replaceStr.Replace(">", "");
    replaceStr = replaceStr.Replace("|", "");
    replaceStr = replaceStr.Replace(""", "");
    replaceStr = replaceStr.Replace("'", "");
    replaceStr = replaceStr.Replace("%", "");
    replaceStr = replaceStr.Replace(";", "");
    replaceStr = replaceStr.Replace("(", "");
    replaceStr = replaceStr.Replace(")", "");
    replaceStr = replaceStr.Replace("+", "");
    replaceStr = replaceStr.Replace("script", "");
    replaceStr = replaceStr.Replace("alert", "");
    replaceStr = replaceStr.Replace("select", "");
    replaceStr = replaceStr.Replace("update", "");
    replaceStr = replaceStr.Replace("insert", "");
    replaceStr = replaceStr.Replace("like", "");
    replaceStr = replaceStr.Replace("applet", "");
    replaceStr = replaceStr.Replace("body", "");
    replaceStr = replaceStr.Replace("embed", "");
    replaceStr = replaceStr.Replace("frame", "");
    replaceStr = replaceStr.Replace("html", "");
    replaceStr = replaceStr.Replace("iframe", "");
    replaceStr = replaceStr.Replace("img", "");
    replaceStr = replaceStr.Replace("style", "");
    replaceStr = replaceStr.Replace("layer", "");
    replaceStr = replaceStr.Replace("link", "");
    replaceStr = replaceStr.Replace("ilayer", "");
    replaceStr = replaceStr.Replace("meta", "");
    replaceStr = replaceStr.Replace("object", "");
    }
    return replaceStr;
    }

    下面是图解:

  • 相关阅读:
    操作系统笔记(六)页面置换算法 FIFO法 LRU最近最久未使用法 CLOCK法 二次机会法
    文加图, 理解Http请求与响应
    Android Retrofit 2.0使用
    Java 注解 (Annotation)你可以这样学
    MySQL 基本语句
    Java数据类型和MySql数据类型对应表
    Android Library 打造自己的 SDK,并 Maven 发布
    Java并发——线程同步Volatile与Synchronized详解
    Android getScrollX()详解
    图解Android View的scrollTo(),scrollBy(),getScrollX(), getScrollY()
  • 原文地址:https://www.cnblogs.com/wt-vip/p/5779344.html
Copyright © 2011-2022 走看看