C# “不可能发生”。有什么回应吗?数据更新了吗?存储纯文本密码会带来麻烦。编写SQL易受攻击的代码是自找麻烦(尤其是纯文本密码)。@LauWeiqi你有例外吗?如果是,在哪条线上?你调试代码了吗?如果是,它是否进入并成功运行最里面的If块?你需要更精确地说明什
C# “不可能发生”。有什么回应吗?数据更新了吗?存储纯文本密码会带来麻烦。编写SQL易受攻击的代码是自找麻烦(尤其是纯文本密码)。@LauWeiqi你有例外吗?如果是,在哪条线上?你调试代码了吗?如果是,它是否进入并成功运行最里面的If块?你需要更精确地说明什,c#,C#,“不可能发生”。有什么回应吗?数据更新了吗?存储纯文本密码会带来麻烦。编写SQL易受攻击的代码是自找麻烦(尤其是纯文本密码)。@LauWeiqi你有例外吗?如果是,在哪条线上?你调试代码了吗?如果是,它是否进入并成功运行最里面的If块?你需要更精确地说明什么不起作用。C#不是我擅长的语言,但我看不到与按钮相关的代码。请仔细阅读评论。如果在内部If语句处设置断点,它在运行时是否停止?用于sql注入预防。用于更安全地处理密码。此外,您正在更新所有碰巧拥有相同密码的用户。您还应该在WHERE子句中检查
“不可能发生”。有什么回应吗?数据更新了吗?存储纯文本密码会带来麻烦。编写SQL易受攻击的代码是自找麻烦(尤其是纯文本密码)。@LauWeiqi你有例外吗?如果是,在哪条线上?你调试代码了吗?如果是,它是否进入并成功运行最里面的If块?你需要更精确地说明什么不起作用。C#不是我擅长的语言,但我看不到与按钮相关的代码。请仔细阅读评论。如果在内部
If
语句处设置断点,它在运行时是否停止?用于sql注入预防。用于更安全地处理密码。此外,您正在更新所有碰巧拥有相同密码的用户。您还应该在WHERE
子句中检查匹配的userid
。@LauWeiqi用谷歌搜索Bobby Tables
,以了解此代码的错误。最好的情况是,有人输入”--
删除所有密码。最坏的情况是,有人写”;删除表user.register--代码>。不要使用动态SQL,使用参数化查询。也不要编写自己的用户管理代码。存储密码的正确方法是对密码进行加密,使用强加密算法对密码进行至少1000次散列,然后只存储散列。像ASP.NET Core Identity这样的框架已经正确地做到了这一点您所说的“什么都不发生”是什么意思。有什么回应吗?数据更新了吗?存储纯文本密码会带来麻烦。编写SQL易受攻击的代码是自找麻烦(尤其是纯文本密码)。@LauWeiqi你有例外吗?如果是,在哪条线上?你调试代码了吗?如果是,它是否进入并成功运行最里面的If块?你需要更精确地说明什么不起作用。C#不是我擅长的语言,但我看不到与按钮相关的代码。请仔细阅读评论。如果在内部If
语句处设置断点,它在运行时是否停止?用于sql注入预防。用于更安全地处理密码。此外,您正在更新所有碰巧拥有相同密码的用户。您还应该在WHERE
子句中检查匹配的userid
。@LauWeiqi用谷歌搜索Bobby Tables
,以了解此代码的错误。最好的情况是,有人输入”--
删除所有密码。最坏的情况是,有人写”;删除表user.register--代码>。不要使用动态SQL,使用参数化查询。也不要编写自己的用户管理代码。存储密码的正确方法是对密码进行加密,使用强加密算法对密码进行至少1000次散列,然后只存储散列。像ASP.NET Core Identity这样的框架已经正确地做到了这一点
public void Btnchange_Click(object sender, EventArgs args)
MySqlConnection con = new MySqlConnection("server=localhost;user id=root;persistsecurityinfo=True;database=user;password=1234");
MySqlDataAdapter sda = new MySqlDataAdapter("select Password from user.register where Password='" + textoldpassword.Text + "'", con);
DataTable dt = new DataTable();
sda.Fill(dt);
if (dt.Rows.Count.ToString() == "1")
{
if (textnewpassword.Text == textconfirmpassword.Text)
{
con.Open();
MySqlCommand cmd = new MySqlCommand("update user.register set Password ='" + textconfirmpassword.Text + "' where Password ='" + textoldpassword.Text + "'", con);
cmd.ExecuteNonQuery();
con.Close();
lblmsg.Text = "Succesfully Updated";
lblmsg.ForeColor = Color.Green;
}
else
{
lblmsg.Text = "New password and confirm password should be same!";
}
private class MyUser
{
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
private void Btnchange_Click(object sender, EventArgs e) {
if (!textnewpassword.Text.Trim().Equals(textconfirmpassword.Text.Trim()))
{
throw new ArgumentException("New password and confirm password should be same!");
}
List<MyUser> myUsers = new List<MyUser>();
using (MySqlConnection con =
new MySqlConnection(
"server=localhost;user id=root;persistsecurityinfo=True;database=user;password=1234"))
{
using (MySqlCommand cmd = new MySqlCommand("select * from user.register where Username=@user and Password=@pass", con))
{
cmd.Parameters.AddWithValue("@user", textusername.Text.Trim());
cmd.Parameters.AddWithValue("@pass", textoldpassword.Text.Trim());
if (cmd.Connection.State != ConnectionState.Open) cmd.Connection.Open();
using (MySqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
myUsers.Add(new MyUser
{
Id = (int)dr["Id"],
Username = dr["Username"].ToString(),
Password = dr["Password"].ToString()
});
}
}
if (cmd.Connection.State == ConnectionState.Open) cmd.Connection.Close();
}
if (!myUsers.Any())
{
throw new ArgumentException("No users found with the given username/password pair!");
}
if (myUsers.Count != 1)
{
throw new ArgumentException("More than 1 user has the same username and password in the database!");
}
MyUser user = myUsers.First();
user.Password = textnewpassword.Text.Trim();
using (MySqlCommand cmd = new MySqlCommand("update user.register set Password=@pass where Id=@id"))
{
cmd.Parameters.AddWithValue("@pass", user.Password);
cmd.Parameters.AddWithValue("@id", user.Id);
if (cmd.Connection.State != ConnectionState.Open) cmd.Connection.Open();
cmd.ExecuteNonQuery();
if (cmd.Connection.State == ConnectionState.Open) cmd.Connection.Close();
}
} }