私はDBからログインするフォームを作った。コードは自明でなければなりません。MYSQL注射からの良い予防?
private void button1_Click(object sender, EventArgs e)
{
try
{
string MyConnection = "datasource=localhost;port=3306;username=root;password=xdmemes123";
MySqlConnection myConn = new MySqlConnection(MyConnection);
MySqlCommand SelectCommand = new MySqlCommand("select * from life.players where DBname='" + this.username.Text + "' and DBpass='" + this.password.Text +"' ; ", myConn);
MySqlDataReader myReader;
myConn.Open();
myReader = SelectCommand.ExecuteReader();
int count = 0;
while (myReader.Read())
{
count = count + 1;
}
if (count == 1)
{
Properties.Settings.Default.Security = "Secure";
Properties.Settings.Default.AdminName = username.Text;
Properties.Settings.Default.AdminPass = password.Text;
Properties.Settings.Default.Save();
MessageBox.Show("Logged in");
this.Hide();
Form2 f2 = new Form2();
f2.ShowDialog();
}
else if (count > 1)
{
Properties.Settings.Default.Security = "Insecure";
MessageBox.Show("Incorrect!");
}
else
{
Properties.Settings.Default.Security = "Insecure";
MessageBox.Show("Incorrect!");
myConn.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("Something went wrong. Error copied to clipboard.");
Clipboard.SetText(ex.Message);
}
}
しかし、私の質問は、これがMYSQL注入から安全かどうかです。もしそうでなければ、私はそれを安全にするために何ができますか?
可能であれば、このコードを書く方法を書いてください。私はこのコーディングには全く新しいですが、本当にそれを愛し、私のプログラムを進めたいと思います。インラインテキストは、注入が発生することを可能にするようあなたが使用することができます
ありません、これはSQLインジェクションから安全ではありません:それはが使用
SELECT *
、唯一SELECT count(*)
ないことに注意してください。読んでみると、すぐにその理由がわかります。 – DavidGこれは、SQLインジェクションの脆弱性がどのように実装されているかを正確に示しています。 – pid
'this.username.Text ==" 0 "; SomeTablesからの削除 - " –