ホームページ > データベース > mysql チュートリアル > C#アプリケーションでのSQL注入を防ぐにはどうすればよいですか?

C#アプリケーションでのSQL注入を防ぐにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-25 10:32:11
オリジナル
973 人が閲覧しました

How Can I Prevent SQL Injection in My C# Applications?

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

入力検証:多層的アプローチ

徹底的な入力検証が重要です。 チェックを実装して、データが予想される形式に適合していることを確認します

電子メール検証:正確な電子メール形式の検証のために正規表現を使用します。
  • 名前の検証:英数字と空間への入力を制限します
  • 特殊文字の消毒:
  • 悪用される可能性のある特殊文字を削除またはエンコードします。
  • .NETの組み込みセキュリティ機能をレバレッジ化します
  • .NETは、SQLインジェクション予防を強化するための強力なツールを提供しています:

データアノテーションと

を使用して、モデルレベルで入力をフィルタリングし、SQLパラメーターに結合したデータを制限します。

  • (慎重に使用):この方法では特殊文字をエンコードできますが、一般にパラメーター化されたクエリよりも好ましいことはありません。 慎重に使用して、補足尺度としてのみ使用します SqlFilterAttribute
  • 結論
  • SqlCommand.EscapeKeywordsパラメーター化されたクエリ、厳密な入力検証、.NETのセキュリティ機能を活用することにより、開発者はC#アプリケーションのSQLインジェクションの脆弱性のリスクを大幅に減らし、データベースシステムとユーザーデータを保護します。

以上がC#アプリケーションでのSQL注入を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート