C#检测是否有危险字符的SQL字符串过滤方法

2 篇文章 0 订阅
1 篇文章 0 订阅

本文以一个C#的SQL数据库字串操作函数为例,说明如何实现对SQL字符串过滤、检测SQL是否有危险字符、修正sql语句中的转义字符,确保SQL不被注入等功能。具体实现代码如下:

SQL字符串过滤函数:

    public static bool ProcessSqlStr(string Str)
    {
      bool ReturnValue = true;
      try
      {
        if (Str.Trim() != "")
        {
          string SqlStr = "exec|insert+|select+|delete|update|count|chr|mid|master+|truncate|char|declare|drop+|drop+table|creat+|create|*|iframe|script|";
          SqlStr += "exec+|insert|delete+|update+|count(|count+|chr+|+mid(|+mid+|+master+|truncate+|char+|+char(|declare+|drop+table|creat+table";
          string[] anySqlStr = SqlStr.Split('|');
          foreach (string ss in anySqlStr)
          {
            if (Str.ToLower().IndexOf(ss) >= 0)
            {
              ReturnValue = false;
              break;
            }
          }
        }
      }
      catch
      {
        ReturnValue = false;
      }
      return ReturnValue;
    }

以下是检测SQL语句中是否包含有非法危险的字符:

    /// <summary>
    /// 检测是否有Sql危险字符
    /// </summary>
    /// <param name="str">要判断字符串</param>
    /// <returns>判断结果</returns>
    public static bool IsSafeSqlString(string str)
    {
      return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");
    }
    /// <summary>
    /// 改正sql语句中的转义字符
    /// </summary>
    public static string mashSQL(string str)
    {
      string str2;
      if (str == null)
      {
        str2 = "";
      }
      else
      {
        str = str.Replace("\'", "'");
        str2 = str;
      }
      return str2;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值