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

Posted 不会撩妹的白芒果

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对数据库进行的字符串攻击相关的知识,希望对你有一定的参考价值。

完整修改查询:

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

添加:

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();
        }
    }
}
复制代码

以上是关于对数据库进行的字符串攻击的主要内容,如果未能解决你的问题,请参考以下文章

XSS攻击

SQL注入漏洞

2017-4-21 字符串攻击 防御 实体类 数据访问类 属性扩展 三层架构开发

2017-04-20Sql字符串注入式攻击与防御

Exp9 Web安全基础实践 20164318 毛瀚逸

试解释 SQL 注入攻击的原理,以及对数据库可能产生的不利影响。