.NET 分享两个SQL注入防御加固解决方案

     SQL 注入绕过技术是一个老生常谈的话题,很多网站都接入了 WAF 等安全产品以此增强拦截和抵御 SQL 注入攻击的能力,另外从纵深防御的策略看还有在应用内部嵌入安全防护模块增强对请求输入参数进行过滤和拦截。下面提供两个防止注入漏洞产生的解决方案。

01.NET过滤单引号

     ADO操作数据库时,如果输入的字符串不为空,方法继续执行 str.Replace("'", "''"),这是一个简单的SQL注入防范措施。它将字符串中的单引号 ' 替换为两个单引号 '',这样可以防止恶意用户通过在输入中插入单引号来破坏SQL查询语句的结构,从而实现SQL注入攻击。

public static string ChkSQL(string str){   if (string.IsNullOrEmpty(str))      {         return "";      }      str = str.Replace("'", "''");      return str;}
DataTable dataTable = GetTable("select top 1 id from Info Where Id='" + Request["id"] + "'")

     这个方法虽然简单,但是在防范基本的SQL注入方面提供了一定的保护。需要注意的是,此方法只针对字符串型的SQL过滤条件有效,对于更复杂的安全性要求,建议使用参数化查询或者ORM工具,而不仅仅依赖于字符串替换来防范SQL注入。

02.NET过滤多个值

     下面这是一个名为 FilterIDs 的方法,用于处理字符串中包含的ID列表,并返回一个经过过滤的、用逗号分隔的字符串。

public static string FilterIDs(string strIDs){            string text = string.Empty;            strIDs = strIDs.Trim();            if (strIDs.Length == 0)            {                return "0";            }            string[] array;            if (strIDs.IndexOf("|") != -1)            {                array = strIDs.Split(new char[]                {                    '|'                });            }            else            {                array = strIDs.Split(new char[]                {                    ','                });            }            foreach (string text2 in array)            {                if (Convert.ToInt32((text2)) != 0)                {                    if (text == string.Empty)                    {                        text = text2;                    }                    else                    {                        text = text + "," + text2;                    }                }            }            if (string.IsNullOrEmpty(text))            {                text = "0";            }            return text;}var Id = FilterIDs(Request["id"]);DataTable dataTable = GetTable("select top 1 id from Info Where Id in(" + infoId + ")")

     该方法的作用是从一个包含ID的字符串中提取有效的ID,并返回一个经过处理的字符串,用逗号分隔。在处理过程中,方法会忽略无效的ID,例如无法转换为整数的部分,确保返回的字符串中只包含有效的ID。

 03.NET安全星球

星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。

图片

图片

图片

20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。

图片

我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。

图片

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dot.Net安全矩阵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值