zoukankan      html  css  js  c++  java
  • asp.net 防止 跨站脚本

    新建一个类safe_360.cs

    using System;
    using System.Collections.Generic;
    using System.Text.RegularExpressions;
    using System.Web;
    
    /// <summary>
    /// safe_360 的摘要说明
    /// </summary>
    public class safe_360
    {
    
        private const string StrRegex = @"<[^>]+?style=[w]+?:expression(|(alert|confirm|prompt)|^+/v(8|9)|<[^>]*?=[^>]*?&#[^>]*?>|(and|or).{1,6}?(=|>|<|in|like)|/*.+?*/|<s*script|<s*img|EXEC|UNION.+?SELECT|UPDATE.+?SET|INSERTs+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)s+(TABLE|DATABASE)";
        public static bool PostData()
        {
            bool result = false;
            for (int i = 0; i < HttpContext.Current.Request.Form.Count; i++)
            {
                result = CheckData(HttpContext.Current.Request.Form[i].ToString());
                if (result)
                {
                    break;
                }
            }
            return result;
        }
    
        public static bool GetData()
        {
            bool result = false;
            for (int i = 0; i < HttpContext.Current.Request.QueryString.Count; i++)
            {
                result = CheckData(HttpContext.Current.Request.QueryString[i].ToString());
                if (result)
                {
                    break;
                }
            }
            return result;
        }
        public static bool CookieData()
        {
            bool result = false;
            for (int i = 0; i < HttpContext.Current.Request.Cookies.Count; i++)
            {
                result = CheckData(HttpContext.Current.Request.Cookies[i].Value.ToLower());
                if (result)
                {
                    break;
                }
            }
            return result;
    
        }
        public static bool referer()
        {
            bool result = false;
            return result = CheckData(HttpContext.Current.Request.UrlReferrer.ToString());
        }
        public static bool CheckData(string inputData)
        {
            if (Regex.IsMatch(inputData, StrRegex))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    View Code

    Global.asax 加入

    void Application_BeginRequest(object sender, EventArgs e)
        {
                if (Request.Cookies != null)
                {
                    if (safe_360.CookieData())
                    {
                        Response.Write("您提交的Cookie数据有恶意字符!");
                        Response.End();
                     
                    }
                
                }
                if (Request.UrlReferrer != null)
                {
                    if (safe_360.referer())
                    {
                        Response.Write("您提交的Referrer数据有恶意字符!");
                        Response.End();
                    }
                }
                if (Request.RequestType.ToUpper() == "POST")
                {
                    if (safe_360.PostData())
                    {
                        Response.Write("您提交的Post数据有恶意字符!");
                        Response.End();
                    }
                }
                if (Request.RequestType.ToUpper() == "GET")
                {
                    if (safe_360.GetData())
                    {
                        Response.Write("您提交的Get数据有恶意字符!");
                        Response.End();
                    }
                }         
        }
    View Code
  • 相关阅读:
    Cocos2d-x 3.0 事件系统【转】
    cocos2d-x中false,setSwallowTouches,stopPropagation的区别
    类成员函数指针 ->*语法剖析
    cocos2d-lua 3.5 ios搭建步骤
    cocos2d-lua 3.5 android搭建步骤
    cocos2d-lua 3.5 android搭建常见错误
    结构体
    乒乓球(0)<P2003_1>
    不高兴的津津(0)<P2004_1>
    陶陶摘苹果(0)<P2005_1>
  • 原文地址:https://www.cnblogs.com/xiaoruilin/p/12420612.html
Copyright © 2011-2022 走看看