欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-18 16:20:04
本文以一个c#的sql数据库字串操作函数为例,说明如何实现对sql字符串过滤、检测sql是否有危险字符、修正sql语句中的转义字符,确保sql不被注入等功能。具体实现代码如...

本文以一个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;
}

上一篇:

下一篇: