老师在ADO.Net视频中关于注入漏洞攻击的讲解中,没有用一开始的那个“先查询用户名得到查询结果后再判断密码是否与查询结果中的密码一致”的登录程序,而是重新写了一个“直接查询用户名和密码得到查询结果的数目”的登录程序,想知道注入漏洞攻击对前一种有什么影响,个人认为前一种是不是在注入攻击时查询语句执行后返回整个数据库中的数据,然后攻击者利用某种手段或工具得到这些数据后,就可以想怎样就怎样了!前一个登录程序代码附出来,大家谈谈看法啊!- Console.WriteLine("请输入您的用户名:");
- string username = Console.ReadLine();
- Console.WriteLine("请输入您的密码:");
- string password = Console.ReadLine();
- using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"))
- {
- conn.Open();
- using (SqlCommand cmd = conn.CreateCommand())
- {
- cmd.CommandText = "select * from T_Users where UserName='" + username + "'";
- //先到表中查用户输入的用户名对应的信息
- using (SqlDataReader reader = cmd.ExecuteReader())
- {
- if (reader.Read())//用户名存在
- {
- string dbpassword = reader.GetString(reader.GetOrdinal("Password"));
- if (password == dbpassword)//比较用户输入的密码和数据库中存储的密码是否一致
- {
- Console.WriteLine("登录成功!");
- }
- else
- {
- Console.WriteLine("密码错误,登录失败!");
- }
- }
- else//Read返回false,就是没有查到这个用户名
- {
- Console.WriteLine("用户名不存在!");
- }
- }
- }
- }
复制代码 |