【社内セキュリティ勉強会 #1 認証・認可】の登壇資料です。
認証を通過しても、オブジェクト単位で認可を確認しなければ他人のデータは見えてしまう——「認証≠認可」を手を動かせる形で持ち帰る回です。
find($id) で取ったレコードを所有チェックせず返す、よくある実装がどう IDOR(安全でない直接オブジェクト参照 / BOLA / Broken Access Control)を生むのか。
URL の ID を1つ書き換えるだけの疑似デモで穴を体感し、「直接参照+認可チェックの欠落」という設計の言葉に翻訳。
最後に FuelPHP(認可がコントローラに散る=分散・暗黙)と Laravel の Gate/Policy(1箇所に集約=集中・明示)を対比します。
▼ 持ち帰る結論
① 認証は本人確認まで
② 取得できる ≠ 見てよい
③ 認可は1箇所に明示集約
想定読者は「認証は書けるが認可は曖昧だった、ちょっと前の自分」。全6回シリーズの第1回。