myConnection.Open();
myString = textBox2.Text;
myPass = textBox1.Text;
MessageBox.Show("Connection established!", "Succes!", MessageBoxButtons.OK);
using (MySqlCommand looking = new MySqlCommand("Select * FROM `users` WHERE username LIKE @User AND password LIKE @password", myConnection))
{
looking.Parameters.Add(new MySqlParameter("User", myString));
looking.Parameters.Add(new MySqlParameter("password", myPass));
MySqlDataReader readData = looking.ExecuteReader();
while(readData.Read())
{
login = true;
}
if (login)
MessageBox.Show("Succes!");
}
嗨!我想知道上面的代码是否是登录表单的安全方式?是否可以在这里进行SQL注入?
另外如何安全保存我的连接字符串?我一直在四处寻找,但我不知道最好的选择..
答案 0 :(得分:2)
对于SQL注入是安全的,但您应该比较完全匹配,而不是使用LIKE
作为用户名和密码。
"Select * FROM `users` WHERE username = @User AND password = @password"
除了安全性之外,如果您只想知道记录是否存在,那么使用COUNT
并使用ExecuteScalar
获取结果,而不是选择所有列。
"Select COUNT(*) FROM `users` WHERE username = @User AND password = @password"
并将结果显示为:
int count = (int) looking.ExecuteScalar();
if(count > 0)
{
//found
}