zoukankan      html  css  js  c++  java
  • 【2017-4-21】ADO.NET 防止字符串注入攻击

    防止SQL注入攻击

    通用方法:可以用正则匹配掉特殊符号

    推荐方法:再给命令发送SQL语句的时候分两次发送

         把SQL语句拆成两块

                  用户输入的是一块;本身写好的是一块

                  第一次把CommandText里写的sql语句发过去;第二次把变量值发过去,进行匹配

    例:

    使列名等于一个变量名

    改变量绑定参数 cmd.Parameters.AddWithValue("变量名称",变量值);

    cmd.Parameters是对象里面的一个属性,返回值是一个集合

    有时会用到同样的变量名 所以在绑定参数之前先清除一下cmd.Parameters.Clear();

    static void Main(string[] args)
            {
                //接收用户输入的查询条件
                Console.WriteLine("请输入要查询的汽车编号:");
                string code = Console.ReadLine();
    
                //造连接对象
                SqlConnection conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123");
    
                //造命令对象
                SqlCommand cmd = conn.CreateCommand();
    
                //给命令对象一条SQL语句
                //使code=一个变量
                cmd.CommandText = "select * from Car where Code=@code";
                //cmd.CommandText = "select * from Car where Code=@code or Name=@name";
    
                //改变量绑定参数
                cmd.Parameters.Clear();//清除绑定的变量,最好每次用参数集合前写一个清除
                cmd.Parameters.AddWithValue("@code",code);
                //cmd.Parameters.AddWithValue("@name",name);//有多少列绑多少个
    
                //打开连接
                conn.Open();
    
                //执行SQL语句
                SqlDataReader dr = cmd.ExecuteReader();
    
                //读取数据
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        Console.WriteLine(dr[0] + "--" + dr[1]);
                    }
                }
                else
                {
                    Console.WriteLine("没有查到相应的数据");
                }
    
                //关闭连接
                conn.Close();
    
                Console.ReadLine();
            }
    复制代码
  • 相关阅读:
    mysql分组统计后将结果顺序排列(union实现)
    mysql格式化日期
    yaf框架安装
    如何通过PHP将excel的数据导入MySQL中
    yii日志保存机制
    安装PyInstaller打包python
    python正则表达式详解
    Python中类的定义与使用
    例子 使用sqlite3 数据库建立数据方式
    python操作轻量级数据库
  • 原文地址:https://www.cnblogs.com/hanqi0216/p/6751848.html
Copyright © 2011-2022 走看看