程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#檢測能否有風險字符的SQL字符串過濾辦法

C#檢測能否有風險字符的SQL字符串過濾辦法

編輯:C#入門知識

C#檢測能否有風險字符的SQL字符串過濾辦法。本站提示廣大學習愛好者:(C#檢測能否有風險字符的SQL字符串過濾辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是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.WordStr("\'", "'");
    str2 = str;
  }
  return str2;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved