ホームページ >データベース >mysql チュートリアル >C# SqlCommand で列名をパラメータ化するにはどうすればよいですか?

C# SqlCommand で列名をパラメータ化するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-23 08:27:23593ブラウズ

How Can I Parameterize Column Names in a C# SqlCommand?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。