zoukankan      html  css  js  c++  java
  • HelperC#常用的防sql注入的关键词检测

     1 using System;
     2 using System.Linq;
     3 using System.Text;
     4 using System.Text.RegularExpressions;
     5 using System.Web;
     6 
     7 namespace HOST_CONTROL_CENTER.Uril.DBHelper
     8 {
     9     /// <summary>
    10     /// 防sql注入关键词检测
    11     /// sql关键词与xss攻击语句
    12     /// 注:尽量使用参数化传值不要拼接sql
    13     /// </summary>
    14     public class SafeSqlHelper
    15     {
    16         private const string StrRegex = @"<[^>]+?style=[\w]+?:expression\(|\b(alert|confirm|prompt)\b|^\+/v(8|9)|<[^>]*?=[^>]*?&#[^>]*?>|\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|<\s*img\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
    17         public static bool PostData()
    18         {
    19             bool result = false;
    20             for (int i = 0; i < HttpContext.Current.Request.Form.Count; i++)
    21             {
    22                 result = CheckData(HttpContext.Current.Request.Form[i].ToString());
    23                 if (result)
    24                 {
    25                     break;
    26                 }
    27             }
    28             return result;
    29         }
    30 
    31         /// <summary>
    32         /// 获取数据
    33         /// </summary>
    34         /// <returns></returns>
    35         public static bool GetData()
    36         {
    37             bool result = false;
    38             for (int i = 0; i < HttpContext.Current.Request.QueryString.Count; i++)
    39             {
    40                 result = CheckData(HttpContext.Current.Request.QueryString[i].ToString());
    41                 if (result)
    42                 {
    43                     break;
    44                 }
    45             }
    46             return result;
    47         }
    48         /// <summary>
    49         /// Cookie数据
    50         /// </summary>
    51         /// <returns></returns>
    52         public static bool CookieData()
    53         {
    54             bool result = false;
    55             for (int i = 0; i < HttpContext.Current.Request.Cookies.Count; i++)
    56             {
    57                 result = CheckData(HttpContext.Current.Request.Cookies[i].Value.ToLower());
    58                 if (result)
    59                 {
    60                     break;
    61                 }
    62             }
    63             return result;
    64 
    65         }
    66         public static bool referer()
    67         {
    68             bool result = false;
    69             return result = CheckData(HttpContext.Current.Request.UrlReferrer.ToString());
    70         }
    71 
    72         /// <summary>
    73         /// 检查数据
    74         /// </summary>
    75         /// <param name="inputData"></param>
    76         /// <returns></returns>
    77         public static bool CheckData(string inputData)
    78         {
    79             if (Regex.IsMatch(inputData, StrRegex))
    80             {
    81                 return true;
    82             }
    83             else
    84             {
    85                 return false;
    86             }
    87         }
    88     }
    89 }

    注:尽量使用参数化传值,减少sql拼接

    365个夜晚,我希望做到两天更一篇博客。加油,小白!
  • 相关阅读:
    大一励志的我,现在已经大三了
    Jenkins+K8s实现持续集成
    Jenkins搭建自动化测试环境
    软件开发式样书 6
    软件开发式样书 5
    软件开发式样书 4
    软件开发式样书 3
    软件开发式样书 2
    软件开发式样书 1
    Git学习笔记
  • 原文地址:https://www.cnblogs.com/qq2806933146xiaobai/p/15683197.html
Copyright © 2011-2022 走看看