当前位置:Gxlcms > 数据库问题 > C#和SQl 注入字符串的攻击 和 防止注入字符转的攻击

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

时间:2021-07-01 10:21:17 帮助过:1人阅读

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“ 作为一整个字符串进行处理。

 

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

标签:

人气教程排行