アクセス管理とは
- リソースにアクセスできる人の管理
- 部署・役職での制御
- 操作による制御
- 更新系はより強い権限が必要
実装方法について
- フレームワーク的なものはなかなか存在しない
- 業務仕様に深く関わるので、汎用化が難しい
- レコード単位で、所有者のみ更新可能、などの制御が可能なDBもあるにはある
- 今は地道に実装するしかない・・・
ブラウザアプリにおける重要な認識
- ブラウザのF12ツールで任意のリクエストを投げることが可能
- つまり想定外の操作がいつでも可能
どう対処するか
- ブラウザ側で対処するには限界があるし、全ての穴は塞げない
- サーバー側で守るしかない
- リクエスト中の情報を無闇に信用しない
サーバー側で守るしかない!!
アクセス管理の実装
- 特に気を付けるべきは更新系(UPDATE/DELETE)
- URLやペイロードで指定されたデータを
ログイン中ユーザーが更新する権限を持つかどうか - このチェックは 絶対に怠ってはならない
怠ると何が起きるか
- F12ツールから任意のデータをGETしたり、PUT/DELETEしたりできてしまう
- 情報漏洩と改竄が起きる
最後に
- リクエスト中の情報を無闇に信用しない
- バックエンドでのチェックは必須、フロントはプラスアルファ
- インターネット公開されるWebアプリでは必ず必要
- 社内に閉じたシステムは悪意を想定する必要性は薄くなる・・・か?
- バグやミスもあるので、対象した方がよい