社内の経費精算サイトでは、Aさんの一覧画面にAさんの申請だけが表示される。しかし、Aさんとしてログインしたまま申請IDを変えて詳細APIへアクセスすると、Bさんの申請を取得できた。運用ルール上、一般社員は本人の申請だけを閲覧できる。原因を解消する対策として、最も適切なものはどれか。
本サイトで独自に作成。IPAの試験問題からの転載ではありません。
公開日:
選択肢を選んで、答え合わせをしましょう。
回答せずに正解・解説を確認する
正解:ウ API側で認証済み利用者と申請の所有者を照合し、要求のたびに閲覧権限を確認する
この表示だけでは、回答数や正答率は変わりません。
解説
一覧の表示制御だけでは、APIへ直接送った要求を制限できません。API側で信頼できる認証情報から利用者を特定し、その利用者が対象申請を閲覧できるかを確認します。この事例では一般社員について所有者が一致しない要求を拒否する必要があります。
一覧ではすでに他人の申請を隠しています。それでもAPIへ直接アクセスできる問題は残ります。
推測を難しくする追加策にはなりますが、他の経路でIDを知った利用者のアクセスを拒否できません。
表示とは別に、データを返すサーバ側で対象ごとの認可を行う対策です。
HTTPSは通信経路の保護であり、ログインした利用者の権限を決める仕組みではありません。
関連知識
認証は利用者が誰かの確認、認可はその利用者に何を許すかの判断です。閲覧だけでなく、更新・削除・エクスポートにも同じ権限確認が必要です。
間違えやすいポイント
クライアントから送られた所有者IDを、そのまま本人の証明として使わないこと。画面にボタンがないこともアクセス制御の代わりになりません。
覚え方
ログインの確認に加え、対象への権限を毎回確認。
実務での意味
自社が管理するシステムのテストでは権限の異なる検証用アカウントを用い、他人のデータを操作できないことを確かめます。
解説:本サイト編集部によるオリジナル文章