メインコンテンツへ
セキュリティ

SQLインジェクション攻撃の説明と対策の組み合わせとして、適切なものはどれか。

ア.攻撃:Webページに悪意あるスクリプトを埋め込む。 対策:入力値のエスケープ処理とコンテンツセキュリティポリシー(CSP)の設定。
イ.攻撃:偽サイトに誘導して認証情報を盗む。 対策:多要素認証の導入とフィッシング対策メールフィルタ。
ウ.攻撃:大量のパケットを送信してサーバを過負荷状態にする。 対策:ファイアウォールによるトラフィック制限とCDN利用。
エ.攻撃:入力フォームに不正なSQL文を混入させ、データベースを不正操作する。 対策:プリペアドステートメント(バインド変数)の使用と入力値検証。正解

解説

SQLインジェクションは「注文書に勝手に「全品無料」という条件を追加する」ような攻撃。プリペアドステートメントは「記入欄に壁を作って、条件の追加を物理的に不可能にする」対策です。

なぜ エ が正解か

SQLインジェクションは入力フォームに「' OR '1'='1」などのSQL断片を混入させ、本来意図しないSQL文を実行させる攻撃です。対策の最善手はプリペアドステートメント(バインド変数)で、SQL文の骨格を先にコンパイルし、後からデータを「変数」として埋め込むことでSQLとして解釈されないようにします。加えて入力値の型・長さ検証やエラーメッセージの非表示も有効です。

なぜ ア は間違いか

Webページに悪意あるスクリプトを埋め込む攻撃はXSS(クロスサイトスクリプティング)の説明です。エスケープ処理とCSPもXSS対策として正しいですが、SQLインジェクションとは別の攻撃です。問題文の「SQL」という単語に引きずられて選ばないようにしましょう。

なぜ イ は間違いか

偽サイトで認証情報を盗む攻撃はフィッシング(Phishing)の説明です。多要素認証とメールフィルタも適切な対策ですが、SQLインジェクションとは無関係です。

なぜ ウ は間違いか

大量パケットでサーバを過負荷にするのはDoS/DDoS攻撃の説明です。ファイアウォールとCDNによる対策も正しいですが、SQLインジェクションとは全く異なる攻撃ベクターです。

出典: AI生成問題(学習用)