zoukankan      html  css  js  c++  java
  • 系统安全问题

    最近在处理项目中的安全问题,特别是Safe_SQL Injection的问题,所有在网上找了一下,记录一下。

    /// <summary>
    /// 创建SQL注入的类
    /// </summary>
    public class Safe_SQL Injection
    {

      private const string StrRegex = @"(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;
        }
      }
    }

    /// <summary>
    /// 在Global中调用
    /// </summary>

    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
      if (Request.Cookies != null)
      {
        if (Safe_SQL Injection.CookieData())
        {
          Response.Write("您提交的Cookie数据有恶意字符!");
          Response.End();
        }
      }

      if (Request.UrlReferrer != null)
      {
        if (Safe_SQL Injection.referer())
        {
          Response.Write("您提交的Referrer数据有恶意字符!");
          Response.End();
        }
      }

      if (Request.RequestType.ToUpper() == "POST")
      {
        if (Safe_SQL Injection.PostData())
        {
          Response.Write("您提交的Post数据有恶意字符!");
          Response.End();
        }
      }

      if (Request.RequestType.ToUpper() == "GET")
      {
        if (Safe_SQL Injection.GetData())
        {
          Response.Write("您提交的Get数据有恶意字符!");
          Response.End();
        }
      }
    }

  • 相关阅读:
    Java应用中的SQL依赖注入攻击和防范
    强大的 Jquery图表绘制插件 —— jqPlot
    jqPlot的Option配置对象详解
    也谈Java值传递到底传递了什么?
    Use Case 中 include 与 extend 的区别
    STAR UML 简述1
    在Hibernate中使用 HibernateTemplate的三种方法
    jquery ui tabs详解(中文)
    高性能网页开发规则
    如何绘制 UML 活动图(Activity Diagram)
  • 原文地址:https://www.cnblogs.com/wucan/p/6272843.html
Copyright © 2011-2022 走看看