我正在尝试在使用MS Access DB的C#Visual Studio 2013中创建登录表单。当我点击登录按钮时,无论我在密码部分输入什么,都会显示“密码正确,登录成功”。
以下是代码:
private void signin_Click(object sender, EventArgs e)
{
String username = user.Text;
String password = user.Text;
String temp = null;
Int32 res = 0;
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\AADHARSH\DS\ASP.NET\logindb.mdb;Persist Security Info=False;";
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection=conn;
cmd.CommandText="SELECT Password FROM UserTable WHERE Username='"+username+"'";
OleDbDataReader reader = cmd.ExecuteReader();
if(reader.Read())
{
result.Text = "Password Correct. Login Succesful";
}
else
{
result.Text="Password field cannot be blank";
}
conn.Close();
}
答案 0 :(得分:1)
您没有检查数据库的密码。更改您的查询,以便它使用"SELECT * FROM UserTable WHERE Username=? AND Password=?";
,假设您将使用OleDb parameters而不是TextBoxes的内容,这将打开您的代码进行SQL注入。
另外,请在以下行检查您的代码:
String username = user.Text;
String password = user.Text;
您对用户名和密码使用相同的文本框值,您可能应该pass.Text