authz · defense-in-depth
認可を「画面を出さない」だけで守らない
役員データ(名簿・会費・当番)は個人情報です。ログイン突破やセッション奪取が起きたとき、 「画面を描画しない」だけの防御では、データベースには生の情報が残ってしまう。 非エンジニアが毎日使う以上、設定ミスひとつで漏れる余地を消したかった。
2要素認証(TOTP)を用意し、一度登録した人には毎回の再検証を要求。そのうえで 「多要素で検証済みであること」を画面遷移・API・データベースの3層すべてで一致させました。 DB 層は既存の認可ロジックを壊さない“後付けのゲート”として重ねる方式を選び、 分散しがちな認可判断を最終的に DB へ収れんさせています。
どれか1層の実装をミスしても、他の層が最後の砦になる。 「結局 DB が守る」という一本の筋が通り、認可の考え方がシンプルになりました。