如何检查用户名是不是存在于数据库中

Posted

技术标签:

【中文标题】如何检查用户名是不是存在于数据库中【英文标题】:how to check the username exist in database or not如何检查用户名是否存在于数据库中 【发布时间】:2021-12-28 08:12:01 【问题描述】:

这是我的代码 我不知道我的错是什么,但它没有检查用户名是否存在于数据库中。


    String connectionString = @"Data Source=localhost; Database=pramod; User ID=itesuser; password=ites; Port=3309;";
                mysqlConnection con = new MySqlConnection(connectionString);
                con.Open();
                String query = "select * from logins where USERNAME=@username and PASSWORD=@password";
                MySqlCommand cmd = new MySqlCommand(query, con);
    
                cmd.Parameters.AddWithValue("@username", TextBox1.Text.Trim());
                cmd.Parameters.AddWithValue("@password", TextBox2.Text.Trim());
    
                MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                sda.Fill(dt);
              
                int i = (int)cmd.ExecuteScalar();
                
    
         
                if (i == 0)
                
                    Response.Write("username wrong");
                
    
                if (dt.Rows.Count > 0)
                
                    Session["username"] = TextBox1.Text.Trim();
                    Response.Redirect("Dashboard.aspx");
                
                else 
                    Label1.Visible = true;
                    Label1.Text = "Your password is incorrect";
                    Label1.ForeColor = System.Drawing.Color.Red;
    
                
                con.Close();

正在检查密码是否正确但不是用户名,现在我需要检查用户名和密码

【问题讨论】:

您是否以纯文本形式存储密码?不要这样做,这是可怕的安全性!另外,如果用户名错误,不要告诉用户,只告诉他们登录失败。任何时候,只要您向用户提供比必要更多的详细信息,他们就有更多机会侵入您的代码。 这是我的任务,我必须显示用户名错误@DavidG 那你应该告诉你的老板这是个多么糟糕的主意。恐怕我不会帮助某人降低应用程序的安全性。祝你好运! 【参考方案1】:

我认为你的线索在这里:

String query = "select * from logins where USERNAME=@username and PASSWORD=@password";

通过这样做,您可以同时检查用户名和密码。因此,如果用户名或密码不正确,则结果中会出现 0 行。

要得到你想要的,只需在 SQL 查询中提及用户名,如果你得到记录,你可以比较 .Net 代码中的密码。 所以:

String query = "select * from logins where USERNAME=@username";

MySqlCommand cmd = new MySqlCommand(query, con);
cmd.Parameters.AddWithValue("@username", TextBox1.Text.Trim());

MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);

如果返回 1 行,则检查密码。

这看起来像是一种不安全的登录方式,所以我希望你至少会对密码进行散列和加盐。现在你是一个数据库泄漏远离一个非常尴尬的情况。 https://duckduckgo.com/?q=password+hashing+and+salting

【讨论】:

以上是关于如何检查用户名是不是存在于数据库中的主要内容,如果未能解决你的问题,请参考以下文章

Core Data - 如何检查用户是不是存在于数据库中?

检查用户名是不是存在于数据库中

如何检查用户是不是存在于数据库表中?

如何检查用户是不是存在于 Firebase 中?

C# - 如何检查用户的输入是不是存在于组合框中(使用的数据绑定项)

如何检查某个数据是不是已存在于firestore中