SQLインジェクションは、攻撃者がデータベースクエリを操作できる深刻なセキュリティの脅威であり、データ侵害につながる可能性があります。 SQLデータベースと相互作用するC#アプリケーションでこのリスクを軽減するには、
を使用してパラメーター化されたクエリを使用することが最重要です。SqlCommand
クラスは、正しく使用すると、SQL注入に対する強力な防御を提供します。 そのパラメーターコレクションは、データ型の検証と変換を自動的に処理し、脆弱性の一般的なソースである手動入力消毒の必要性を削除します。
SqlCommand
このコードスニペットは、
および
の使用を示しています。 値はパラメーターとして渡され、直接SQL注入を防ぎます。 SQL Serverは、文字列からXMLへの暗黙的な変換を処理します。<code class="language-csharp">private static void UpdateDemographics(Int32 customerID, string demoXml, string connectionString) { // Update store demographics stored in an XML column. 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); // Implicit XML conversion by SQL Server try { connection.Open(); Int32 rowsAffected = command.ExecuteNonQuery(); Console.WriteLine($"RowsAffected: {rowsAffected}"); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }</code>
でパラメーター化されたクエリを使用することにより、開発者はユーザー入力の手動での消毒に関連するリスクを排除します。このアプローチは、SQLインジェクションの脆弱性からC#アプリケーションを保護するための堅牢で効率的な方法を提供します。 これにより、データの整合性が確保され、不正アクセスから保護されます
以上がC#のSQLCommandは、どのようにしてSQL注入攻撃を防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。