【发布时间】:2013-09-25 21:12:55
【问题描述】:
我有一个登录winform,我在里面输入了Change Password。我有此代码用于更新我的数据库中的密码信息。但是如果它是真的它不会读取我的数据读取器,但如果它是假的它会读取它,并更改我的数据库中的密码。
public void ChangePass()
{
sc.Open();
try
{
if (_oldpass == "" || _newpass == "" || _conpass == "")
{
string message = "Must fill up all the fields!";
string title = "Voting System Error Message";
MessageBox.Show(message, title, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
cmd = new SqlCommand("SELECT password FROM TableLogin WHERE password = '" + _oldpass + "'", sc);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read() == true)
{
sc.Close();
if (_newpass == _conpass)
{
sc.Open();
cmd = new SqlCommand("UPDATE TableLogin SET password = '" + _newpass + "' WHERE username = 'admin'", sc);
SqlDataReader sdr = cmd.ExecuteReader();
if (sdr.Read() == true)
{
MessageBox.Show("Successfully Changed!");
//This part does not read if true.. but if sdr.Read() == false it changes the password from my database.
}
}
else
{
string message = "New Password and Confirm Password does not match!";
string title = "Voting System Error Message";
MessageBox.Show(message, title, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
string message = "Wrong Old Password!";
string title = "Voting System Error Message";
MessageBox.Show(message, title, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
sc.Close();
}
}
我不明白,为什么?
【问题讨论】:
-
您的代码成熟可用于 SQL 注入。
-
Little Bobby Tables 会喜欢那个代码
-
您正在对非标量查询执行“读取”。我不希望这能像你编码的那样工作。
-
A:SQL 注入,B:停止存储密码。
-
对不起,我是编程初学者。 @Joel,我只是想问一下,我如何根据我的代码来做呢?
标签: c# datareader