防Sql注入的两个简单解决办法

本文介绍了两种防止SQL注入的方法:使用SqlParameter传递参数和对输入字符串进行关键字过滤。通过实例展示了如何实现过滤处理,并提供了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种方法:
1.所有传入的Sql参数统统都用SqlParameter来写.

第二种方法
1.对所有要传入的参数做Sql关键字符过滤.

用法:

string strSql = "select * from UserInfo where UID = {0}";
strSql = FormatSql(strSql,tbUID.Text);

/// <summary>
        /// Sql语句过滤处理类
        /// </summary>
        public static class SqlFilter
        {
            /// <summary>
            /// 过滤Sql注入的字符
            /// </summary>
            /// <param name="sqlCondition">要过滤的Sql数据 </param>
            /// <returns> </returns>
            public static string FilterInjection(string sqlCondition)
            {
                if (sqlCondition.Trim() != string.Empty)
                    sqlCondition = sqlCondition.Trim();
                sqlCondition = sqlCondition.Replace("''", "");
                sqlCondition = sqlCondition.Replace("'", "''");
                sqlCondition = sqlCondition.Replace("_", @"\_");
                sqlCondition = sqlCondition.Replace("%", @"\%");

                return sqlCondition;
            }

            public static string AddEsCape(string strSql, string sqlCondition)
            {
                string m_ReturnSql = string.Empty;
                if (sqlCondition.Contains(@"\%") || sqlCondition.Contains(@"\_"))
                {
                    m_ReturnSql = string.Format(strSql, sqlCondition) + @" escape '\' ";
                }
                else
                {
                    m_ReturnSql = string.Format(strSql, sqlCondition);
                }
                return m_ReturnSql;
            }

            public static string FormatSql(string strSql, string sqlCondition)
            {
                string m_Condition = FilterInjection(sqlCondition);
                if (string.IsNullOrEmpty(m_Condition))
                {
                    return string.Empty;
                }
                else
                {
                    return AddEsCape(strSql, m_Condition);
                }
            }
        }

转载于:https://www.cnblogs.com/feinian/archive/2009/03/18/1415395.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值