zoukankan      html  css  js  c++  java
  • 对数据库进行的字符串攻击

    完整修改查询:

    输入要删除的用户名,提示有没有此条数据,如果有而后提示是否确定要删除

    添加:

    using System.Data.SqlClient;

    而后:

    复制代码
    namespace 完整修改查询_字符串攻击
    {
        class Program
        {
            static void Main(string[] args)
            {
                bool has = false;//判断用输入的数据是否存在,true表示存在,false不存在
    
                Console.Write("请输入要删除的用户名:");
                string uname = Console.ReadLine();
    
                SqlConnection conn = new SqlConnection("server=.;database=Data0928;user=sa;pwd=123");
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select *from Users where UserName = '" + uname + "'";
    
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows) //如果查到此用户信息
                {
                    has = true;//将中间变量更改为true,证明有此条信息
                }
                conn.Close();
    
                if (has)//如果有此条信息,那么需要进行删除判断
                {
                    Console.Write("已查到此用户信息,是否要删除?(Y/N)");
                    string u = Console.ReadLine(); //记录用户的操作
                    if (u.ToUpper() == "Y")//判断用户操作,如果是Y,说明要删除
                    {
                        //下面的代码是真正删除此条数据
                        cmd.CommandText = "delete from Users where UserName = '" + uname + "'";
                        int c = 0;
                        try
                        {
                            conn.Open();
                            c = cmd.ExecuteNonQuery();
                        }
                        catch
                        {
                            Console.WriteLine("服务器连接失败!!");
                        }
                        finally
                        {
                            conn.Close();
                        }
    
                        if (c > 0)//判断是否删除成功
                            Console.WriteLine("删除成功!");
                        else
                            Console.WriteLine("删除失败!!");
                    }
                    else//用户选择不删除
                    {
                        Console.WriteLine("删除取消!");
                    }
                }
                else//未查到用户信息,判断has=false
                {
                    Console.WriteLine("用户名输入错误!未查到此用户信息!");
                }
    
    
                Console.ReadKey();
            }
        }
    }
    复制代码

    防止字符串攻击:
    使用  @变量名

    复制代码
    namespace Update
    {
        class Program
        {
            static void Main(string[] args)
            {
                bool has = false;//判断用输入的数据是否存在,true表示存在,false不存在
    
                Console.Write("请输入要修改的用户名:");
                string uname = Console.ReadLine();
    
                SqlConnection conn = new SqlConnection("server=.;database=Data0928;user=sa;pwd=123");
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select *from Users where UserName = '" + uname + "'";
    
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows) //如果查到此用户信息
                {
                    has = true;//将中间变量更改为true,证明有此条信息
                }
                conn.Close();
    
                if (has)//如果有此条信息,那么需要进行删除判断
                {
                    Console.Write("已查到此用户信息,是否要修改?(Y/N)");
                    string u = Console.ReadLine(); //记录用户的操作
                    if (u.ToUpper() == "Y")//判断用户操作,如果是Y,说明要删除
                    {
                        Console.Write("请输入要修改的密码:");
                        string pwd = Console.ReadLine();
                        Console.Write("请输入要修改的昵称:");
                        string nick = Console.ReadLine();
                        Console.Write("请输入要修改的性别:");
                        string sex = Console.ReadLine();
                        Console.Write("请输入要修改的生日:");
                        string bir = Console.ReadLine();
                        Console.Write("请输入要修改的民族:");
                        string nation = Console.ReadLine();
                        Console.Write("请输入要修改的班级:");
                        string cla = Console.ReadLine();
                        //防止字符串攻击
                        cmd.CommandText = "update Users set PassWord=@pwd,NickName=@nick,Sex=@sex,Birthday=@bir,Nation=@nation,Class=@cla where UserName=@uname";
                        cmd.Parameters.Clear();
                        cmd.Parameters.AddWithValue("@pwd", pwd);
                        cmd.Parameters.AddWithValue("@nick", nick);
                        cmd.Parameters.AddWithValue("@sex", sex);
                        cmd.Parameters.AddWithValue("@bir", bir);
                        cmd.Parameters.AddWithValue("@nation", nation);
                        cmd.Parameters.AddWithValue("@cla", cla);
                        cmd.Parameters.AddWithValue("@uname", uname);
    
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                        Console.WriteLine("修改成功!");
                    }
                    else//用户选择不删除
                    {
                        Console.WriteLine("修改取消!");
                    }
                }
                else//未查到用户信息,判断has=false
                {
                    Console.WriteLine("用户名输入错误!未查到此用户信息!");
                }
                Console.ReadKey();
            }
        }
    }
    复制代码
  • 相关阅读:
    【PAT】1020. Tree Traversals (25)
    Pongo建立信号基站-实际上还是考中位数
    从此不再惧怕URI编码:JavaScript及C# URI编码详解
    WebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下?
    命令行下开启与关闭windows防火墙关端口(转)
    MySql数据库批量备份命令
    C#检查文件是否被占用
    C#使用Gzip解压缩完整读取网页内容
    [转]免费电话网专用免费平台
    libQt5Core.so: undefined reference to `dlclose@GLIBC_2.4'
  • 原文地址:https://www.cnblogs.com/baimangguo/p/6129751.html
Copyright © 2011-2022 走看看