FE SUBJECT B
基本情報技術者 科目Bの問題解説
問題
B社の会員制サイトでは,ログイン処理で利用者が入力したIDとパスワードを,プログラムがそのまま連結して作ったSQL文で認証している。診断の結果,IDの入力欄に特定の文字列を入力するだけで,正しいパスワードを知らなくても管理者としてログインできてしまうことが分かった。担当者は緊急に修正方針を決めることになった。
修正方針として,最も適切なものはどれか。
- ア ログイン失敗時のエラーメッセージを,より丁寧な日本語に書き換える。
- イ 認証用のSQL文を,プレースホルダを用いたパラメタ化クエリに書き換える。
- ウ ログインボタンの色を目立たない色に変更する。
- エ IDの入力欄を画面の下部に移動する。
- オ パスワードの最大文字数を増やす。
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目B範囲
正解と解説
正解:認証用のSQL文を,プレースホルダを用いたパラメタ化クエリに書き換える。
正解:イ
状況の整理:パスワードを知らなくても管理者になれるのは,入力したIDがSQL文の条件式として解釈され,認証条件を常に真にできてしまうから。典型的なSQLインジェクションによる認証回避である。
なぜイか:パラメタ化クエリにすれば入力値はデータとして扱われ,SQLの条件式を書き換えられなくなる。認証回避の根本原因を取り除ける。
誤答の理由:ア(エラーメッセージ)・ウ(ボタンの色)・エ(入力欄の位置)は見た目や文言の話で,SQLの解釈には一切影響しない。オ(パスワード最大長)はパスワードを使わずに突破される本問では無意味。
読み解きのコツ:「パスワードを知らなくてもログインできる」はインジェクションによる認証回避のサイン。入力とSQLの分離を選ぶ。
この問題について
公開問題・サンプル問題のセキュリティ事例形式(A社シナリオ+もっともらしい誤答)を参考にした独自問題です。本文・選択肢・解説は新規作成しています。
公式試験問題、公開問題、市販教材、外部問題サイトの問題文を転載・改題したものではありません。