• C#和SQl 注入字符串的攻击 和 防止注入字符转的攻击


    --SQl中
    --建立ren的数据库,插入一条信息
    create database ren 
    go
    use ren
    go
    create table xinxi
    (
    code nvarchar(20) primary key,--编号
    name nvarchar(50)--名字
    )
    insert into xinxi values('1001','zhangsan')
                for (; ; )
                {
       
                    bool b = false;//利用中间变量
                    Console.Write("请输入要修改的编号:");
                    string no = Console.ReadLine();
                    //查询展示
                    SqlConnection zhancnn = new SqlConnection("server=.;database=ren;user=sa;pwd=123");//连接
                    //操作的语句
                    SqlCommand zhancmd = zhancnn.CreateCommand();
                    zhancmd.CommandText = "select * from xinxi where code='" + no + "'";
                    //执行操作的语句
                    zhancnn.Open();
                    SqlDataReader ss = zhancmd.ExecuteReader();
                    if (ss.HasRows)//数据库中是否有要修改的数据
                    {
                        b = true;
                    }
                    zhancnn.Close();
                    if (b == true)//如果有要修改的数据
                    {
    
                        Console.Write("找到【" + no + "】的信息,请输入要修改的名字:");
                        string mingzi = Console.ReadLine();
                        zhancmd.CommandText = "update xinxi set name='"+mingzi+"' where code='"+no+"'";
                        zhancnn.Open();
                        zhancmd.ExecuteNonQuery();
                        zhancnn.Close();
                        Console.WriteLine("修改完毕!");
                        break;
                    }
                    else//如果没有要修改的数据
                    {
                        Console.WriteLine("数据库中没有该条信息,请输入正确的编码!!");
                    }
    
                }
                Console.ReadLine();

    执行时,,注意,我就要输入了:

    然后查询数据库,查询全部,就成为了

    为了防止这种注入文字攻击,我们就需要:

    //C#中 
    
    for (; ; )
                {
       
                    bool b = false;//利用中间变量
                    Console.Write("请输入要修改的编号:");
                    string no = Console.ReadLine();
                    //查询展示
                    SqlConnection zhancnn = new SqlConnection("server=.;database=ren;user=sa;pwd=123");//连接
                    //操作的语句
                    SqlCommand zhancmd = zhancnn.CreateCommand();
                    zhancmd.CommandText = "select * from xinxi where code='" + no + "'";
                    //执行操作的语句
                    zhancnn.Open();
                    SqlDataReader ss = zhancmd.ExecuteReader();
                    if (ss.HasRows)//数据库中是否有要修改的数据
                    {
                        b = true;
                    }
                    zhancnn.Close();
                    if (b == true)//如果有要修改的数据
                    {
    
                        Console.Write("找到【" + no + "】的信息,请输入要修改的名字:");
                        string mingzi = Console.ReadLine();
                        zhancmd.CommandText = "update xinxi set name=@mingzi where code=@no;";//@变量名:占位符。注意:name=@mingzi没有引号
                     zhancmd.Parameters.Clear();//必须先清空里面所有内容
                     zhancmd.Parameters.Add("@mingzi",mingzi);//类似哈希表。第一个值随便取,必须跟上边一致;第二个是变量
                     zhancmd.Parameters.Add("@no",no);
                        zhancnn.Open();
                        zhancmd.ExecuteNonQuery();
                        zhancnn.Close();
                        Console.WriteLine("修改完毕!");
                        break;
                    }
                    else//如果没有要修改的数据
                    {
                        Console.WriteLine("数据库中没有该条信息,请输入正确的编码!!");
                    }
    
                }
                Console.ReadLine();
    //如果在执行窗口输入上跟上次一样的内容,那么输出的结果就是把”那句注入的代码“和”要改的name“ 作为一整个字符串进行处理。
  • 相关阅读:
    初学Django
    Git的初始化配置和基本命令的使用
    python读取和写入excel里面的数据(附int变float解决方法)
    启动Django报错ModuleNotFoundError: No module named 'pytz'
    pytest之参数化
    解决pytest运行时报错ModuleNotFoundError
    专业程序员必知的技巧:敲打代码
    开源项目文档应规避的13处“硬伤”
    [置顶] 理解Linux系统负荷
    六大开源监测工具 你用过哪个?
  • 原文地址:https://www.cnblogs.com/wwz-wwz/p/5869844.html
Copyright © 2020-2023  润新知