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
  • 相关阅读:
    matplotlib formatters
    matplotlib locators
    mysql> 12 simple but staple commands
    mysql--> find your databases' local position
    ubuntu16.04安装caffe常见问题及其解决方案
    gitlab使用说明
    vim配置摘要
    shell 提示符个性化设置
    python拼接参数不确定的SQL时防注入问题--条件语句最后拼入
    python_opencv ——图片预处里(二)
  • 原文地址:https://www.cnblogs.com/xiaoruilin/p/12420612.html
Copyright © 2011-2022 走看看