ホームページ > データベース > mysql チュートリアル > ユーザーコメントがある場合でも、INSERT ステートメントで SQL インジェクションがどのように発生するのでしょうか?また、それを防ぐにはどうすればよいですか?

ユーザーコメントがある場合でも、INSERT ステートメントで SQL インジェクションがどのように発生するのでしょうか?また、それを防ぐにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-04 10:59:38
オリジナル
979 人が閲覧しました

How Can SQL Injection Occur in INSERT Statements, Even with User Comments, and How Can It Be Prevented?

コメントを含む 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();
ログイン後にコピー
  • @id および @comment パラメータは、挿入される値のプレースホルダーとして機能します。
  • AddWithValue メソッドはパラメータのエスケープを自動的に処理し、悪意のあるパラメータが確実にエスケープされるようにします。入力は SQL コマンドとして解釈されません。

パラメータ化された SQL ステートメントを採用することで、適切なコーディング プラクティスを維持し、保護することができます。 SQL インジェクションを防ぎ、アンケート Web ページでの不正なデータ操作を防ぎます。

以上がユーザーコメントがある場合でも、INSERT ステートメントで SQL インジェクションがどのように発生するのでしょうか?また、それを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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