SQLインジェクション攻撃に対するC#アプリケーションの強化:実用的なガイド
SQLインジェクションは、SQLデータベースと相互作用するアプリケーションの重大な脆弱性のままです。 このガイドは、この脅威からのC#アプリケーションを保護するための堅牢な戦略の概要を説明しています。
パラメーター化されたクエリ:防衛の礎
SQL注入に対する最も効果的な防御は、パラメーター化されたクエリを使用することです。 この手法は、直接的な文字列連結を回避し、悪意のあるコードがSQLコマンドとして解釈されるのを防ぎます。 C#では、レバレッジおよびそのパラメーターコレクション:SqlCommand
<code class="language-csharp">private static void UpdateDemographics(Int32 customerID, string demoXml, string connectionString) { 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); try { connection.Open(); Int32 rowsAffected = command.ExecuteNonQuery(); Console.WriteLine($"RowsAffected: {rowsAffected}"); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }</code>
と@ID
がプレースホルダーとして機能する方法に注意してください。
@demographics
徹底的な入力検証が重要です。 チェックを実装して、データが予想される形式に適合していることを確認します
電子メール検証:データアノテーションと:
:を使用して、モデルレベルで入力をフィルタリングし、SQLパラメーターに結合したデータを制限します。
SqlFilterAttribute
SqlCommand.EscapeKeywords
パラメーター化されたクエリ、厳密な入力検証、.NETのセキュリティ機能を活用することにより、開発者はC#アプリケーションのSQLインジェクションの脆弱性のリスクを大幅に減らし、データベースシステムとユーザーデータを保護します。以上がC#アプリケーションでのSQL注入を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。