c#でSQLインジェクションを防ぐ方法は何ですか?
C#でSQLインジェクションを防ぐために、パラメーター化クエリを使用することができます。パラメーター化クエリは、クエリパラメーターをSQLステートメントから分離する方法であり、データベースに渡す前に値が正しくエンコードされることを保証します。
パラメータ化クエリを使用した例を示します。
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "SELECT * FROM Users WHERE Username = @Username AND Password = @Password";
SqlCommand command = new SqlCommand(query, connection);
// 添加参数并设置值
command.Parameters.AddWithValue("@Username", username);
command.Parameters.AddWithValue("@Password", password);
SqlDataReader reader = command.ExecuteReader();
// 处理查询结果
while (reader.Read())
{
// 处理每一行数据
}
}
上記の例では、SqlCommandクラスのParameters.AddWithValueメソッドを使用してパラメーターを追加しました。これにより、パラメーターの値が適切にエンコードされ、SQLインジェクション攻撃を防ぐことができます。
パラメータ化クエリを使用することで、SQLインジェクションを防ぐだけでなく、クエリのパフォーマンスを向上させ、同じクエリを複数回実行する際にコンパイル済みのクエリプランを再利用できます。そのため、データベース操作を行う際は常にパラメータ化クエリを使用することをお勧めします。