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

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

本文以一个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;
}
标签:C#,检测,SQL,字符串,过滤
0
投稿

猜你喜欢

  • C# .NET 中的缓存实现详情

    2023-05-30 18:35:12
  • Spring Boot学习入门之AOP处理请求详解

    2023-11-27 10:55:17
  • Android EditText限制输入整数和小数的位数的方法示例

    2022-12-23 05:15:30
  • C#实现winform中RichTextBox在指定光标位置插入图片的方法

    2022-04-04 01:50:16
  • Android自定义View实现微信语音界面

    2022-03-27 20:35:27
  • Java 程序员掌握 Spring Boot非常有必要

    2021-06-27 19:06:52
  • 详解Java中NullPointerException异常的原因详解以及解决方法

    2023-01-22 20:13:28
  • C#警惕匿名方法造成的变量共享实例分析

    2021-08-26 19:35:22
  • C#调用Java方法实例详解

    2021-10-16 22:50:20
  • Android 中View.onDraw(Canvas canvas)的使用方法

    2022-11-16 16:40:48
  • 简单聊聊c# 事件

    2022-03-05 06:16:52
  • C#纹理画刷TextureBrush用法实例

    2023-03-17 07:23:12
  • C#使用符号表实现查找算法

    2022-08-07 01:16:45
  • Windows下RabbitMQ安装及配置详解

    2022-04-29 08:11:18
  • 基于springboot+vue实现垃圾分类管理系统

    2023-04-17 08:39:11
  • c#动态执行脚本的3种方式详解

    2021-09-11 13:41:58
  • Android开发之ViewPager实现滑动切换页面

    2023-03-10 05:32:43
  • Android图片无限轮播的实现代码

    2023-02-12 14:57:20
  • Java读取txt文件中的数据赋给String变量方法

    2022-08-04 22:32:19
  • c#多线程网络聊天程序代码分享(服务器端和客户端)

    2022-08-10 00:32:48
  • asp之家 软件编程 m.aspxhome.com