FUNDAMENTAL INFORMATION TECHNOLOGY ENGINEER
基本情報技術者の問題解説
問題
A社の会員サイトでは,注文明細をURL末尾の注文番号(例:/order?no=1024)で表示する。ログインした会員Xが自分の注文番号を1だけ変えた番号でアクセスしたところ,他の会員の注文明細(氏名・住所・購入品)が表示された。サーバ側では,ログインしているかどうかは確認していたが,その注文がログイン中の会員本人のものかどうかは確認していなかった。
対策として,最も適切なものはどれか。
- ア 注文番号を連番ではなく,長くて推測しにくい文字列にする。
- イ 注文明細画面に「他人の情報を見ないでください」と注意書きを表示する。
- ウ サーバ側で,要求された注文がログイン中の会員本人のものかを毎回確認する。
- エ 注文明細のフォントを小さくして読みにくくする。
- オ ログイン後の操作ログを毎日バックアップする。
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目B範囲
正解と解説
正解:サーバ側で,要求された注文がログイン中の会員本人のものかを毎回確認する。
正解:ウ
状況の整理:ログイン(認証)はしているが,そのデータにアクセスする権限があるか(認可)を確認していない。番号を変えるだけで他人の情報が見える,典型的な認可不備(アクセス制御の不備)。
なぜウか:要求された注文が本人のものかをサーバ側で毎回照合すれば,他人の番号を指定しても拒否できる。認可の欠落を直接補う対策。
誤答の理由:ア(推測しにくい番号)は当てにくくするだけで,番号が漏れれば見えてしまう(隠蔽に頼る対策)。イ(注意書き)・エ(フォント)は意味がない。オ(ログのバックアップ)は事後の話で,閲覧自体は防げない。
読み解きのコツ:「ログインは確認するが本人のデータか確認していない」は認可不備。サーバ側の権限チェックが答え。
この問題について
公開問題・サンプル問題のセキュリティ事例形式(A社シナリオ+もっともらしい誤答)を参考にした独自問題です。本文・選択肢・解説は新規作成しています。
公式試験問題、公開問題、市販教材、外部問題サイトの問題文を転載・改題したものではありません。