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);
                    }
                }
            }
  • 相关阅读:
    移动端touch与click区别--移动端开发整理笔记(五)
    移动端适配(rem & viewport)--移动端开发整理笔记(四)
    移动端事件(touchstart、touchmove、touchend)--移动端开发整理笔记(三)
    Flex弹性盒模型(新老版本完整)--移动端开发整理笔记(二)
    meta设置与去除默认样式--移动端开发整理笔记(一)
    react native ios 上架
    react16 路由按需加载、路由权限配置
    mpvue 页面预加载,新增preLoad生命周期
    mpvue 星星打分组件
    mpvue 签字组件
  • 原文地址:https://www.cnblogs.com/feinian/p/1415395.html
Copyright © 2011-2022 走看看