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

时间:2013-05-14 00:06:38

标签: c# 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);
    }

}

2 个答案:

答案 0 :(得分:3)

这种方法有几个问题:

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

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

答案 1 :(得分:1)

protected void btn_login_Click1(object sender, EventArgs e)
{
        string user = txt_userid.Text;
        string pass = txt_pwd.Text;
        conn.Open();
        SqlCommand cmd = new SqlCommand("select userid,password from tbllogin where userid=@user and password=@pass", conn);
        cmd.Parameters.Add("user", @user);
        cmd.Parameters.Add("pass", @pass);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        if (dt.Rows.Count > 0)
        {
            conn.Close();
            Response.Redirect("welcome.aspx");
        }
        else
        {
            conn.Close();
            ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Invalid Username and Password')</script>");
        }
    }