最初に、似ているトピックをいくつか見つけましたが、すべての質問に完全に答えているわけではありません。
次のようなコードを使用する場合の最初の質問:
MySqlCommand cmd = new MySqlCommand("SELECT `productnummer`, `NAAM`, `TYPE` `OMSCHRIJVING`, `Product-ID`, `Barcode` FROM `orders`.`producten` where (`productnummer` like(@variable) or `naam` like @variable or `type` like @variable or `omschrijving` like @variable or `product-id` like @variable or `barcode` like @variable) "and `uit assortiment` = 0");
cmd.Parameters.Add(new MySqlParameter("@variable", '%' + textBox1.Text + '%'));
% which を使用して sql 変数を定義できる場合、パラメーターを安全に使用するにはどうすればよいでしょうか (私が知る限り、SQL 構文です)。これは、ユーザーが % または * または何かを自分で入力すると、それが機能するという意味ではありませんか?
私の2番目の質問:
MySqlCommand cmd = new MySqlCommand("SELECT `user-id` FROM `orders`.`werknemers` WHERE username = @username and `password` = @password");
cmd.Parameters.Add(new MySqlParameter("@username", username));
cmd.Parameters.Add(new MySqlParameter("@password", password));
ユーザー名とパスワードを含むテーブルを持つデータベースがある場合(明らかにパスワードのハッシュ)。私のアプリケーションには、ユーザーがユーザー名とパスワードを入力するテキストボックスがあります。パスワードはハッシュされ、このデータは上記のようにデータベースに送信されます。データベースがユーザーIDを返す場合、私はこのユーザーが存在することを知っており、ユーザーIDを使用してさらに通信できます。明らかに何かが間違って入力されていない場合
これはこれを行う安全な方法ですか?またはより良い方法はありますか?
C# でデータベースと通信するための最も安全な方法は何ですか?