正则表达式防止SQL注入(C#版的)

Java项目防止SQL注入的方式总结 Java项目防止SQL注入的方式总结 springboot配置请求过滤器防止SQL注入 nginx防止SQL注入 mybatis防止SQL注入 阅读详情
 本来对正则表达式不是很了解,但由于项目需要,项目主要没有采用存储过程方式来存储 SQL语句,所以很有可能被黑客用SQL注入攻击,现在就在网上找了找解决办法,在业务层来过滤SQL语句,防止SQL注入攻击,主要是采用了正则表达式,因为正则表达式对字符串的操作是很强大的.

首先用一个Validate()类来封装正则表达式和相关操作:

    //验证是否有SQL注入字符
    private bool ValidateQuery(Hashtable queryConditions)
    {
    //构造SQL的注入关键字符
    #region 字符
    string[] strBadChar = {"and"
    ,"exec"
    ,"insert"
    ,"select"
    ,"delete"
    ,"update"
    ,"count"
    ,"or"
    //,"*"
    ,"%"
    ,":"
    ,"/'"
    ,"/""
    ,"chr"
    ,"mid"
    ,"master"
    ,"truncate"
    ,"char"
    ,"declare"
    ,"SiteName"
    ,"net user"
    ,"xp_cmdshell"
    ,"/add"
    ,"exec master.dbo.xp_cmdshell"
    ,"net localgroup administrators"};
    #endregion

    //构造正则表达式
    string str_Regex = ".*("
    for (int i = 0; i < strBadChar.Length - 1; i++)
    {
    str_Regex += strBadChar[i] + "|"
    }
    str_Regex += strBadChar[strBadChar.Length - 1] + ").*"
    //避免查询条件中_list情况
    foreach (string str in queryConditions.Keys)
    {
    if(str.Substring(str.Length - 5)=="_list")
    {
    //去掉单引号检验
    str_Regex = str_Regex.Replace("|'|", "|");
    }
    string tempStr = queryConditions[str].ToString();
    if (Regex.Matches(tempStr.ToString(), str_Regex).Count > 0)
    {
    //有SQL注入字符
    return true;
    }
    }
    return false;
    }

queryConditions 是一个hashtable,用于传入查询条件,hashtable中的键值(key)为:@name,相对应SQL中的参数,那Value则对应为参数的实际值了.

正则表达式的应用主要是按这样的规律来过滤字符串的:

.*(and|exec|select|update|or|'|''|).*   // str_Regex

核心函数主要是: Regex.Matches(tempStr.ToString(), str_Regex).

要是在 tempStr 字符串中含有非法字符, 则函数的Count值将大于0

好了,就这样就可以判断是否含有SQL注入攻击字符了.
asp.net的SQL防注入过滤函数大集合 常用的asp.net的SQL防注入过滤函数大集合,实用性很高! 执行效率不错! 立即下载

相关推荐

遥感图像融合实战:5分钟搞懂全色与多光谱图像如何提升分辨率(附Python代码)

本文通过实战案例,详细解析了如何利用全色锐化技术融合全色与多光谱遥感图像,以提升图像分辨率。文章深入浅出地介绍了核心概念、环境配置、经典GS融合算法的Python代码实现,并对比了不同算法的优劣,最后提供了效果评估方法与实战陷阱分析,帮助读者快速掌握遥感图像融合的关键技术。

weixin_29041195的博客 394

SQL防注入正则表达式

SQL防注入正则表达式

硅脂味咖啡的博客 3414

Transformer代码(Pytorch实现和详解)!!!

这个是第一版,有些代码如果不对,欢迎在评论指正,后续会慢慢改,我也是刚接触transformer,若有些地方理解不对还请指正。

xml的博客 5613

正则表达式防止SQL注入

本来对正则表达式不是很了解,但由于项目需要,项目主要没有采用存储过程方式来存储 SQL语句,所以很有可能被黑客用SQL注入攻击,现在就在网上找了找解决办法,在业务层来过滤SQL语句,防止SQL注入攻击,主要是采用了正则表达式,因为正则表达式对字符串的操作是很强大的.首先用一个Validate()类来封装正则表达式和相关操作:    //验证是否有SQL注入字符    private bool Va

温水中的青蛙 2957

MTGS与3D高斯泼溅:如何用多轨迹数据重建自动驾驶场景(附代码解析)

本文深入解析了MTGS(多轨迹高斯泼溅)技术在自动驾驶场景重建中的工程实践。该方法通过分层场景表示,巧妙融合多轨迹数据,利用3D高斯泼溅技术统一处理静态几何与动态物体,有效解决了复杂环境下的重建难题。文章结合代码,详细阐述了其实现框架、损失函数设计及优化策略,为构建高保真数字孪生场景提供了实用指南。

v5w6x的博客 446

OpenHarmony自定义Launcher

OpenHarmony源码版本:4.0release开发板:DAYU / rk3568DevEco Studio版本:4.0.0.600切换分支为OpenHarmony-4.0-Release,并下载源码。

Abner_Crazy的博客 1630

sql防止注入正则匹配

通用所有,正则之前转小写 (.*\=.*\-\-.*)|(.*\|\|.*)|(.*\s+(and|or)\s+.*) 完美匹配

qq_40127376的博客 3480

QoderWake 与 Qoder 工具生态详解

Qoder CLIQoder SDKQoderWake谁在用你(开发者)你的程序你的数字员工谁在跑你的终端会话你的应用进程Daemon 后台进程什么时候跑你启动时你的代码调用时7×24 持续运行怎么触发键盘输入函数调用定时/事件/API/IM有记忆吗会话级 + 文件无多层持久记忆能协作吗Subagent多 Waker + IM 群组核心价值编码效率集成灵活性自主生产力一句话总结。

驽马不舍 968

c# .net 正则表达式验证sql非法字符串,防止sql注入

老铁,就一句代码 Regex.IsMatch(sWord.ToLower(), "/response|group_concat|cmd|sysdate|xor|declare|db_name|char| and| or|truncate| asc| desc|drop |table|count|from|select|insert|update|delete|union|into|load_fi...

mcsoft_lzm的专栏 3453

【乐企】开票控制服务

例子:企业信息初始化。

九七的博客 453

Trae 保姆级使用指南,零基础小白也能实现编程。

Trae 使用指南 Trae AI 使用 零基础编程 满血版 DeepSeek-R1&V3 AI IDE 深度理解中文开发场景 傻瓜式编程 编程入门 开发入门

Mr.L-OAM的博客 5818

SQL防注入方法

public static string FilterSpecial(string text) { if (text == "") { return text; } else { text = text.Replace("'", ""); ...

weixin_45363630的博客 284

【ArcGIS遇上Python】使用add-in向导开发ArcGIS插件(1):add-in工具介绍及安装

文章目录addin介绍addin下载addin安装 addin介绍 ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作。相对于以往9.x系列,addin的无论是从使用或者编写都更加方便快捷。通过开发语言,可以制作ArcGIS Desktop各个软件模块的插件。 Esri提供了Python加载项向导工具来实现Addin界面的搭建,可以到Esri官网去下载该工具Python加载项向导 。从介绍来看,该设计器要求的最低ArcGIS版本为10.1 ,如下图所示: add

智慧空间实验室 7202

C#中可以使用正则表达式来过滤html字符

在C#中可以使用正则表达式来过滤html字符,比如,在验证用户输入时,为了保证安全性,就需要过滤html字符。using System.Text.RegularExpressions;Regex.Replace(htmlcode ,"]+>","");解释一下:[^>]  其中[^...] 就是匹配任何字符,但不许匹配^之后紧跟的字符,也就是如果"然后就是那个 + 号, 加号的

dream_like的专栏 2329

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C#中避免SQL中的注入式攻击(winform)

C#中避免SQL中的注入式攻击(winform) string str_Regex = @"and|or|exec|execute|insert|select|delete|update|alter|create|drop|count|chr|char|asc|mid|substring|master|truncate|declare|xp_cmdshell|restore|backup|n

brian0031的专栏 1299

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C# 检查字符串,防SQL注入攻击

  C# 检查字符串,防SQL注入攻击 SQL注入式攻击是利用是指利用设计上的漏洞,在目标服务器上运行Sql命令以及进行其他方式的攻击动态生成Sql命令时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因。比如: 如果你的查询语句是select * from admin where username="&user&" and password="&pwd&""

419

C#中使用正则表达式初探

/******雪龙原创*******/ //版权所有,末经作者同意不得转载 前段忙了好长一段时间,终于有点时间学点新东西了。记得前段看过几篇安全方面的文章,提到SQL注入的问题,于是就想做些防注入方面的探索。要防范注入,最重要是对输入的信息,尤其是放到SQL语句中执行的信息,进行验证,保证其中不包含恶意的SQL元素,而这种验证,正好属于正则表达式的范围,于是对C#的正则表达式进行了实验,以其满

1732

ADO。Net(二)——防止SQL注入攻击

规避SQL注入 如果不规避,在黑窗口里面输入内容时利用拼接语句可以对数据进行攻击 如:输入Code值 p001' union select * from Info where '1'='1 //这样可以查询到所有数据,不要轻易相信用户输入的内容 防止SQL注入攻击 通用方法:可以用正则匹配掉特殊符号 推荐方法:再给命令发送SQL语句的时候分两次发送    ...

dhope1234的博客 137

oracle改密码sql语句,在C#中使用sql语句更改Oracle数据库的用户密码

我正在处理一项要求,必须从我的应用程序更改当前用户的oracle连接密码.我发现我可以使用以下语句通过SQL来完成此任务:ALTER USER *username* IDENTIFIED BY *password*但是,因为用户名和密码未作为带引号的字符串发送到数据库,所以不能使用绑定参数. (此答案也为stated)当我连接一个字符串并将其作为常规sql查询通过我的Entity Framewor...

weixin_30789297的博客 283

C#很全的sql关键字,字符的过滤的方式,但是其中并不是都很对

sql关键字过滤C#方法 /// &lt;summary&gt; ///SQL注入过滤 /// &lt;/summary&gt; /// &lt;param name="InText"&gt;要过滤的字符串&lt;/param&gt; /// &lt;returns&gt;如果参数存在不安全字符,则返回true&lt;/returns&gt; public bool SqlFilte

丘鸣山的博客 1257

Sql 过滤

public static class SqlToNull     {         ///         /// 过滤不安全的字符串         ///         ///         ///         public static string FilteSQLStr( string Str )         {

yun917457201的博客 362

c# 防止sql 注入

新加 RequestValidationFilter.cs。因为会获取页面所有的字段,所以需要过滤掉很多字段。

weixin_42955679的博客 907

使用正则表达式来防止SQL注入攻击

document.domain = "youkuaiyun.com";只要几个字符就能防SQL注入——正则表达式  前天朋友的网站被SQL挂马了,好惨,整个数据库不能用了。因为里面全是脚本。网站崩溃……       今儿他总算是把数据库还原完事了(还好有急时备份),之后打电话和我说了这事儿。忍不住建意他在所有有用户输入的地方进行验证,引用一句名言:“所有输入都是罪恶的”……

xd1983的专栏 1万+
上一篇: Portal
下一篇: jsp fckeditor 上传中文图片乱码问题的解决方法
OnlyOfMe
博客等级 码龄19年 14粉丝 24原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值