完整修改删除,防止数据库字符串攻击
Posted 疯丫头0805
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了完整修改删除,防止数据库字符串攻击相关的知识,希望对你有一定的参考价值。
一、完整修改和查询:
中间变量运用。
1、先查
2、执行操作
----------------------------------------------------
二、防止SQL数据库字符串注入攻击:
需要使用cmd.Parameters这个集合
占位符: @key 代表这个位置用这个占位符占住了
Parameters这个集合中将此占位符所代表的数据补全
cmd.Parameters.Clear(); --添加占位符数据之前,要清空此集合
cmd.Parameters.Add("@pwd", Pwd); --占位符内容填充
cmd.Parameters.Add("@nname",Nname);
cmd.Parameters.Add("@sex", (Sex=="男")?"1":"0");
cmd.Parameters.Add("@bir", Birthday);
cmd.Parameters.Add("@nat", Nation);
cmd.Parameters.Add("@uname", Uname);
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient;//引用这个空间命名 namespace 作业 { class Program { static void Main(string[] args) { while (true) { //显示信息 Console.Clear();//清屏 #region Console.WriteLine("用户名" + "\t" + "密码" + "\t" + "昵称" + "\t" + "性别" + "\t" + "生日" + " " + "民族"); //实例化,创建类,连接数据库 SqlConnection conn = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123;"); //设置数据库中的表的操作 SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "select * from Users;"; //执行操作 conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { Console.WriteLine(dr["username"] + "\t" + dr["password"] + "\t" + dr["nickname"] + "\t" + (((bool)dr["sex"]) ? "男" : "女") + "\t" + Convert.ToDateTime(dr["brithday"]).ToString("yyy年MM月dd日") + "\t" + dr["nation"]); } conn.Close(); #endregion Console.WriteLine("-------------------------------------------------------"); Console.Write("请输入您想执行的操作(1.添加 2.修改 3.删除):"); string n = Console.ReadLine(); //添加信息 if (n == "1") { Console.Write("请输入您要添加的用户名:"); string Uname = Console.ReadLine(); Console.Write("请输入您要添加的密码:"); string Pwd = Console.ReadLine(); Console.Write("请输入您要添加的昵称:"); string Nname = Console.ReadLine(); Console.Write("请输入您要添加的性别:"); bool Sex = Convert.ToBoolean(Console.ReadLine()); Console.Write("请输入您要添加的生日:"); DateTime Birthday = Convert.ToDateTime(Console.ReadLine()); Console.Write("请输入您要添加的民族:"); string Nation = Console.ReadLine(); //连接数据库 SqlConnection coon1 = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123"); //设置数据库中的表格的操作 SqlCommand cmd1 = coon1.CreateCommand(); cmd1.CommandText = "insert into Users values(‘" + Uname + "‘,‘" + Pwd + "‘,‘" + Nname + "‘,‘" + (Sex ? "1" : "0") + "‘,‘" + Birthday + "‘,‘" + Nation + "‘)"; //执行操作 coon1.Open(); cmd1.ExecuteNonQuery(); coon1.Close(); //提示是否添加成功 Console.WriteLine("您已添加成功,请单击刷新信息表!"); Console.ReadLine(); } //修改信息 else if (n == "2") { bool has = false;//定义一个bool类型的变量 Console.Write("请输入要修改的用户名:"); string Uname = Console.ReadLine(); //1、连接数据库 SqlConnection conn2 = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123;");//编写连接字符串 //先查看信息表中是否有想要修改的那个用户名,有则修改,没有则重新输入 SqlCommand cmd2 = conn2.CreateCommand(); cmd2.CommandText = "select * from Users where username=‘" + Uname + "‘;"; conn2.Open(); SqlDataReader dr2 = cmd2.ExecuteReader(); if (dr2.HasRows)//如果查出有该用户 { has = true; } conn2.Close(); if (has)//查到要修改的用户 { Console.WriteLine("已查到" + Uname + "这个用户的信息,请进行修改:"); Console.Write("请输入修改后的密码:"); string Pwd = Console.ReadLine(); Console.Write("请输入修改后的性别:"); string Sex = Console.ReadLine(); Console.Write("请输入修改后的生日:"); string Birthday = Console.ReadLine(); //2、设置修改内容的操作,防止数据攻击 //cmd2.CommandText = "update Users set password=‘"+Pwd+"‘,sex=‘"+((Sex=="男")?"1":"0")+"‘,brithday=‘"+Birthday+"‘ where username=‘"+Uname+"‘"; //用 @key 占位符 cmd2.CommandText = "update Users set [email protected],[email protected],[email protected] where [email protected];"; cmd2.Parameters.Clear();//这步必须有,一定要先清空 cmd2.Parameters.Add("@pwd",Pwd); cmd2.Parameters.Add("@sex",(Sex=="男")?"1":"0"); cmd2.Parameters.Add("@bir",Birthday); cmd2.Parameters.Add("@uname",Uname); //3、执行操作 conn2.Open(); cmd2.ExecuteNonQuery(); conn2.Close(); //4、提示一下是否修改完成 Console.WriteLine("您已修改完成,请单击刷新信息表"); Console.ReadLine(); } else { Console.WriteLine("未查到该用户,请核实后重新输入!"); } } //删除信息 else if (n == "3") { Console.Write("请输入要删除的用户名:"); string Uname = Console.ReadLine(); //1、连接数据库 SqlConnection conn3 = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123"); //查询是否有该用户 bool has1 = false;//定义一个bool类型的变量 SqlCommand cmd3 = conn3.CreateCommand(); cmd3.CommandText = "select * from Users where username=‘" + Uname + "‘; "; conn3.Open(); SqlDataReader dr3 = cmd3.ExecuteReader(); if (dr3.HasRows)//如果查出有该用户 { has1 = true; } conn3.Close(); if (has1) { Console.WriteLine("已查到" + Uname + "这个用户的信息,请进行删除:"); //2、设置要对数据库中的表进行的操作内容 cmd3.CommandText = "delete from Users where [email protected]"; cmd3.Parameters.Clear(); cmd3.Parameters.Add("@uname", Uname); //3、执行操作 conn3.Open();//打开通道 cmd3.ExecuteNonQuery();//执行操作 conn3.Close();//关闭通道,通道只有一个,每次用完都要关闭,要不然下次用连接不上 //提示一下,看是否删除成功,成功则显示提示语句,不成功则不显示,并报错 Console.WriteLine("您已删除成功,请单击刷新信息表!"); Console.ReadLine(); } else { Console.WriteLine("未查到该用户,请核实后重新输入!"); } } else { Console.WriteLine("您的输入有误,请重新输入!"); Console.ReadLine(); } } Console.ReadLine(); } } }
以上是关于完整修改删除,防止数据库字符串攻击的主要内容,如果未能解决你的问题,请参考以下文章