コメントを含む INSERT ステートメントでの SQL インジェクション
Web アプリケーションを開発する場合、次のような安全と思われる操作であっても、SQL インジェクションから保護することが重要です。ユーザー入力を含む INSERT ステートメント。
この特定のシナリオでは、アンケート Web フォームにテキスト ボックスが含まれています。コメントの場合、コメント入力が安全に処理されない場合、実際に SQL インジェクションが発生する可能性があります。ユーザーが次の悪意のあるコメントを送信したとします:
'); DELETE FROM users; --
このコメントを挿入するための SQL ステートメントが単純に構築されている場合、すべてのユーザー レコードが不正に削除される可能性があります:
INSERT INTO COMMENTS VALUES(123, '"); DELETE FROM users; -- ');
このような攻撃を防ぐには、ユーザー入力をクエリ文字列に連結しないパラメータ化された SQL ステートメントを使用することが不可欠です。 .NET 2.0 では、パラメータを指定して SqlCommand クラスを利用できます。例:
string comment = "..."; // User input int id = 123; string sql = "INSERT INTO COMMENTS (ID, Comment) VALUES (@id, @comment)"; SqlCommand command = new SqlCommand(sql, connection); command.Parameters.AddWithValue("@id", id); command.Parameters.AddWithValue("@comment", comment); command.ExecuteNonQuery();
パラメータ化された SQL ステートメントを採用することで、適切なコーディング プラクティスを維持し、保護することができます。 SQL インジェクションを防ぎ、アンケート Web ページでの不正なデータ操作を防ぎます。
以上がユーザーコメントがある場合でも、INSERT ステートメントで SQL インジェクションがどのように発生するのでしょうか?また、それを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。