zoukankan      html  css  js  c++  java
  • 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“ 作为一整个字符串进行处理。
  • 相关阅读:
    [工作后学习]解决回家之后不想看书的问题
    [M$]重装或更换主板后提示“由于指定产品密钥激活次数“ office 2016
    [linux]查询当前目录大小 du -h --max-depth=1
    【Qt学习笔记】12_MyAction自定义类
    【Qt学习笔记】11_MainWindow2
    Ubuntu18.04 搜狗输入法乱码
    【Qt学习笔记】10_MainWindow
    【Qt学习笔记】09_用户登陆界面
    【Qt学习笔记】08_布局管理
    【Qt学习笔记】07_滑块组件
  • 原文地址:https://www.cnblogs.com/wwz-wwz/p/5869844.html
Copyright © 2011-2022 走看看