繁体   English   中英

在asp.net中验证数据库中的用户名和密码

[英]Validating username and password in a database in asp.net

我正在尝试创建一个登录页面。 我有一个名为Login的数据库表,它有两列:ID和Password。 它包含以下ID和密码对:第一行:(13282,123456),第二行:(11111,11111)。 如果用户名和密码是正确的,我将页面重定向到succesful.aspx,如果用户名或密码错误,我将页面重定向到unsuccesful.aspx。 我的问题是,当我输入13283作为ID和123456作为密码,它做的一切正确,我被重定向到成功的页面。 但是当我输入ID = 11111和密码= 11111时,即使一切都是真的,它也会重定向到不成功的页面。 我认为问题是,我的查询只检查第一行。 这是代码:

 protected void loginButton_Click(object sender, EventArgs e)
{

    SqlConnection con = new SqlConnection();
    con.ConnectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=University;Integrated Security=True;Pooling=False";


    Int32 verify;
    string query1 = "Select count(*) from Login where ID='" + idBox.Text + "' and Password='" + passwordBox.Text + "' ";
    SqlCommand cmd1 = new SqlCommand(query1, con);
    con.Open();
    verify = Convert.ToInt32(cmd1.ExecuteScalar());
    con.Close();
    if (verify > 0)
    {
        Response.Redirect("succesful.aspx");
    }
    else
    {
        Response.Redirect("unsuccesful.aspx",true);
    }

}

这种方法有几个问题:

  • 它需要以纯文本形式存储密码 - 这是用户密码最糟糕的事情:任何不小心访问您数据库的人都会立即拥有您所有用户的密码,这非常非常糟糕。
  • 它易受SQL注入攻击 - 连接字符串以产生SQL命令是危险的,因为恶意用户可能输入破坏SQL并将其转换为其他内容的字符串。

你应该研究这个问题的答案。 这里讨论的方法并不像您实施的那样简单,但它们使您的系统更具防弹性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM