1

我的登录页面有问题。如果我不输入用户名或密码,它应该说“请输入用户名或密码”,而不是进入目标页面,我的意思是如果我点击提交按钮,则无需在登录字段中输入任何内容,它会受到欢迎页面实际上不应该发生。

这是我的代码,请有人告诉我我的错误在哪里:

public class Login
{
  public string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
    public int GetLogin(string UserName, string Password)
    {
      SqlConnection con = new SqlConnection(str);
      SqlDataAdapter da = new SqlDataAdapter("select * from Login where UserName='"+UserName+"' and Password='"+Password+"'",con);
 DataSet ds = new DataSet();
        da.Fill(ds);
        if (ds.Tables[0].Rows.Count > 0)
        {
            if ((ds.Tables[0].Rows[0].ItemArray[0].ToString() == UserName) && (ds.Tables[0].Rows[0].ItemArray[1].ToString() == Password))
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }

        else
        {
            return -1;
        }
    }
Login.aspx.cs:
protected void BtnLogin_Click(object sender, EventArgs e)
    {
        Session["UserName"] = TxtUserName.Text;      

        Login lg = new Login();    

        if ((lg.GetLogin(TxtUserName.Text, TxtPassword.Text) == 1))
        {
            Response.Redirect("c1.aspx");

        }

        else if((TxtUserName.Text=="")&&(TxtPassword.Text==""))
        {
            Lbl1.Text = "Please Enter the UserName and Password";
        }

        else
        {

            Lbl1.Text = "Sorry,Invalid UserName or Password";
        }             

    }
4

3 回答 3

5

所有这些功能都已内置到 ASP.NET 中。

查看RequiredFieldValidator以验证您的字段,或使用登录控件为您处理所有表单功能。

查看FormsAuthenticationMembership以进行用户身份验证。

于 2009-01-30T16:21:58.697 回答
4

我真的不知道问题是什么,因为它看起来应该可以工作,但是你有一个巨大的 SQL 注入问题。在测试数据库上对此进行测试,但将其输入为您的用户名。

' and 1 = 1; drop table Login; --

我建议您查找 SqlParameter 并搜索“SqlParameter SQL Injection Attack”

于 2009-01-30T16:24:25.477 回答
1

1.- 用户和通过空验证是在 db 调用之后,所以如果你有一个空白用户和一个空白密码,登录将成功

2.-您正在创建对 sql 注入开放的 sql 查询,请使用参数化查询。

于 2009-01-30T16:27:07.187 回答