情報セキュリティ
基本情報技術者試験|M社の会員検索機能で、利用者の入力した会員名をSQL文に直接連結して問合せを実行している。診断で『名前欄に特殊な…
M社の会員検索機能で、利用者の入力した会員名をSQL文に直接連結して問合せを実行している。診断で『名前欄に特殊な文字列を入れると本来見えないはずの会員情報が返る』脆弱性が指摘された。アプリ側で講じる根本対策として、最も適切なものはどれか。
ア値をバインド機構で受け渡し、構文部分と切り離して問合せを組み立てる。
イ危険な記号を含む入力を拒否する禁止文字リストをあらかじめ設けて事前に弾く。
ウ問合せに用いるDB接続アカウントの権限を参照専用に絞り込む。
エ検索結果を返す前に件数の上限を設け、一度に返る行数を抑える。
正解
ア.値をバインド機構で受け渡し、構文部分と切り離して問合せを組み立てる。
脆弱性の原因は『入力値をSQL文へ直接連結している』点にある。値をバインド機構(プレースホルダ)に渡して構文部分と切り離して問合せを組み立てると、入力値はあくまでデータとして扱われ、入力に紛れ込ませた命令が構文として解釈されないため、SQLインジェクションを根本から無効化できる。
?選択肢ごとの解説
ア ○脆弱性の原因は『入力値をSQL文へ直接連結している』点にある。値をバインド機構(プレースホルダ)に渡して構文部分と切り離して問合せを組み立てると、入力値はあくまでデータとして扱われ、入力に紛れ込ませた命令が構文として解釈されないため、SQLインジェクションを根本から無効化できる。
イ ×禁止文字リストによる拒否は列挙漏れやエンコードによる回避が起きやすく、許可した文字の組合せで成立する注入を取りこぼす。
ウ ×接続アカウントを参照専用にしても、参照系の注入で会員情報を読み出される経路は残り、連結実装に起因する注入自体は解消しない。
エ ×返却行数の上限は一度に漏れる量を抑えるだけで、注入された問合せがDB内で実行される事実は変わらず脆弱性は残存する。
情報セキュリティの他の問題
あるWebアプリのログイン処理は、入力されたIDとパスワードを文字列としてSQL文に連結し『該当行が1件以上あれば認証成功』…あるWebアプリの一覧画面は、利用者が選んだ並べ替え対象の列名をSQL文のORDER…N社の掲示板サービスで、利用者が投稿した内容をそのままWebページに表示している。ある投稿を閲覧した別の利用者のブラウザ上で…O社の会員サイトで、ログイン中の利用者が攻撃者の用意した別サイトの罠を踏むと、本人の意図しない登録情報変更が会員サイト側で実…P社のECサイトが、世界各地の多数の感染端末から一斉に大量のアクセスを受け、正規利用者がサイトを開けない状態に陥った。送信元…Q社の利用者が社外からWebシステムにアクセスした際、ブラウザに『サーバ証明書が信頼できない』旨の警告が表示された。経路上で…R社で利用中のソフトウェアに、修正プログラムがまだ提供されていない脆弱性を突く攻撃が出回り始めた。修正プログラムが提供される…S社の従業員が業務で通常のWebサイトを閲覧しただけで、特に何もダウンロードしていないのに端末がマルウェアに感染した。改ざん…
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。
基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。
登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。
作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-sec-0013
