完整修改删除,防止数据库字符串攻击

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();
        }
    }
}

技术分享技术分享

 

以上是关于完整修改删除,防止数据库字符串攻击的主要内容,如果未能解决你的问题,请参考以下文章

完整修改删除,占位符防治字符串攻击

完整修改和删除以及防字符串注入攻击

对数据库进行的字符串攻击

MyBatis如何防止SQL注入

MyBatis怎么防止SQL注入

如何防止代码注入攻击在PHP