SqlCommand での列名のパラメータ化
パラメータ化されたクエリは、SQL インジェクション攻撃を防止し、データベース操作のセキュリティを確保するために不可欠です。ただし、C# SqlCommand では、列名のパラメータ化に関して独特の課題が生じます。 SqlCommand は列名のパラメータ化をネイティブにサポートしていないため、元の質問で示されている構文ではエラーが発生します。
これに対処するには、実行時にクエリを動的に構築することをお勧めします。これには、列名とクエリの残りの部分を連結することが含まれます。これは不便に思えるかもしれませんが、セキュリティ リスクを軽減することが重要です。
// IMPORTANT: Ensure "slot" is validated against a whitelist to prevent injection attacks SqlCommand command = new SqlCommand("SELECT [" + slot + "] FROM Users WHERE name=@name; ") prikaz.Parameters.AddWithValue("name", name);
クエリを動的に構築することで、列名を効果的にパラメータ化できます。潜在的な脆弱性を回避するために、すべてのユーザー入力をホワイトリストに登録するか検証することにより、セキュリティを優先することを忘れないでください。
以上がC# SqlCommand で列名をパラメータ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。