zoukankan      html  css  js  c++  java
  • 防Sql注入的两个简单解决办法

    第一种方法:
    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);
                    }
                }
            }
  • 相关阅读:
    mysql存储过程基本函数
    Java多线程程序设计详细解析
    手把手教你写Undo、Redo程序
    mysql存储过程学习总结-操作符
    深入解析ATL第二版(ATL8.0)笔记--(2.3节)
    mysql 5.0存储过程学习总结
    php判断浏览器和语言
    Windows7系统环境安装配置PHP开发环境
    Nginx环境下Php安装
    php学习
  • 原文地址:https://www.cnblogs.com/feinian/p/1415395.html
Copyright © 2011-2022 走看看