软件编程
位置:首页>> 软件编程>> C#编程>> C#检测是否有危险字符的SQL字符串过滤方法

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

作者:shichen2014  发布时间:2023-10-11 12:48:48 

标签:C#,检测,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;
}
0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com