SQL インジェクションから C# アプリケーションを保護する
SQL インジェクションの脆弱性は、データベースのセキュリティとアプリケーションの整合性に対して深刻な脅威をもたらします。 この記事では、パラメーター化されたクエリが C# でこれらの攻撃に対して堅牢な防御を提供する方法を示します。
パラメータ化されたクエリは、ユーザーが指定したデータから SQL コマンドを分離します。この重要な分離により、悪意のあるコードの挿入が防止され、不正なアクセスや操作からデータベースが保護されます。 C# の SqlCommand
クラスは、この手法の組み込みサポートを提供します。
パラメータ化されたクエリの使用例を次に示します:
<code class="language-csharp">string commandText = "UPDATE Sales.Store SET Demographics = @demographics " + "WHERE CustomerID = @ID;"; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(commandText, connection); command.Parameters.Add("@ID", SqlDbType.Int).Value = customerID; command.Parameters.AddWithValue("@demographics", demoXml); // ... execute the command ... }</code>
パラメータ @ID
と @demographics
が SqlParameter
オブジェクトを使用してどのように定義されているかに注目してください。 これにより、ユーザー入力が実行可能コードではなくデータとして扱われることが保証され、SQL インジェクションのリスクが排除されます。
パラメータ化されたクエリが主な防御手段ですが、補足的なフロントエンド入力検証によりセキュリティが強化されます。 正規表現などの技術を使用すると、データ形式を強制し (電子メール アドレスの検証など)、特殊文字を防ぐことができます。 ただし、入力検証はパラメータ化されたクエリの代替ではなく、補完的な手段として考慮される必要があります。
パラメーター化されたクエリを一貫して使用し、適切な入力検証を実装することで、C# アプリケーションでの SQL インジェクション攻撃のリスクを大幅に軽減できます。
以上がパラメーター化されたクエリは C# アプリケーションでの SQL インジェクションをどのように防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。