SONAE KNOWLEDGE / PHP SECURITY / 10

PHPのログイン後を守る。セッション・CSRF・認可を別々に点検する

ログイン済みを安全の代わりにせず、本人・変更の意思・対象の権限を三つの条件で確認する。

公式資料確認:2026-10-26/AIによる資料確認・執筆

公式情報には各節で出典を付けています。確認表・架空例・受入条件はSONAEの提案です。制作と資料確認にAIを使用。本人の編集確認は未了です。専門家による独立した監修は受けていません。

本人を覚える仕組みだけで、操作は許可できない

PHP公式はセッションの厳格モード、HTTPS時のSecure、HttpOnly、SameSiteなどの設定を説明しています。これらは異なる役割を持ち、一つを有効にしただけでログイン後の問題がすべて解決するものではありません。採用する保存方式と実際のWeb設定を管理担当が確認し、アプリで独自に持つセッションも区別します。

公式情報:PHP公式:セッションの設定(確認 2026-10-26)

意図しない変更を、Cookieの設定だけに任せない

OWASPはCSRF対策でフレームワークの機能やトークン等を扱い、SameSiteだけをすべての状況の対策にしないよう説明しています。SONAEの受入案では、設定変更や削除などの状態を変える操作について、正規の画面からの操作と、確認条件を欠く要求の期待結果を別に決めます。トークンをログやURLへ不用意に残さない管理も合わせます。

公式情報:OWASP:CSRF対策(確認 2026-10-26)

本人・操作・対象の三つを別々に確かめる

本人・操作・対象の三つを別々に確かめる三つは独立した条件です。順番に一度通れば全操作を許可できるという図ではありません。01本人の継続セッション・回復02変更の確認CSRF対策・再認証03対象への権限会社・役割・レコードログイン済みなら全許可APIと出力の認可を省かない独立した条件を、別の証拠で確認本人・操作・対象の三つを別々に確かめる三つは独立した条件です。順番に一度通れば全操作を許可できるという図ではありません。01本人の継続セッション・回復02変更の確認CSRF対策・再認証03対象への権限会社・役割・レコードログイン済みなら全許可APIと出力の認可を省かないそれぞれの確認結果を記録
三つは独立した条件です。順番に一度通れば全操作を許可できるという図ではありません。
図の内容を文章で読む

本人の継続:セッション・回復。変更の確認:CSRF対策・再認証。対象への権限:会社・役割・レコード。進めない判断:ログイン済みなら全許可/APIと出力の認可を省かない。三つは独立した条件です。順番に一度通れば全操作を許可できるという図ではありません。

操作の対象を、会社と役割で制限する

OWASPはリクエストごとの認可と、既定での拒否を推奨しています。ログインした人が任意の資料を読めるという意味ではありません。SONAEの架空試験案では、会社、役割、対象レコード、操作の組合せを表にし、一般利用者の削除や別会社の閲覧を拒否する期待結果を置きます。画面からボタンを隠したことだけを認可の証拠にしません。

公式情報:OWASP:リクエストごとの認可(確認 2026-10-26)

退職・役割変更後の扱いを決める

ここからはSONAEの運用提案です。アカウントの停止や権限変更を、既存のセッションへどう反映するかを仕様にします。利用できなくなる時点、例外、再認証、管理者が操作する回復手順を対応させます。パスワードを変えたという作業記録だけで、すべての端末とセッションが終了したとは推測しません。製品や実装の条件を確認します。

SONAEの点検・運用提案。架空例。

回復の入口も、特別扱いで弱くしない

ログイン不能時の回復、MFAの再設定、管理者による招待などは、通常のログインとは別の入口です。誰が承認し、何を記録し、古い手段をいつ無効にするかを決めます。架空利用者で通常の回復と不正な役割の拒否を確認する計画を立て、利用者の秘密や回復コードの値を報告書へ貼らないようにします。

SONAEの点検・運用提案。架空例。

三つの条件を、それぞれ受け入れる

本人のセッション、変更の確認、対象への権限について、対象版、確認方法、期待結果、実測、未確認を別欄にします。三つを同じ「ログインできた」という結果で閉じません。今回の記事作成では実顧客の認証やアカウントに触れていません。AIで実装した機能でも、会社や役割が変わる場面で権限が残らないかを、架空データで検証する設計へつなげましょう。

SONAEの点検・運用提案。架空例。

役割を変えた後まで、認可表を読み合わせる

架空の二社と管理者・一般利用者を使い、一覧、詳細、変更、削除、レポートの期待結果を行ごとに決めます。ログイン直後だけでなく、担当から外れた後、会社が変わった後、アカウントを停止した後を別の状態として置きます。許可の判定をアプリ内で一時保存する実装なら、更新が反映される条件も仕様へ含めます。CSRF条件が欠けた要求は、失敗しても業務データが変わらないことを受入にします。利用者が同じボタンを押せたかではなく、操作前後の状態と見える範囲を照合するのが要点です。この表の許可・拒否は計画であり、顧客環境での実測結果ではありません。

SONAEの点検・運用提案。架空例。

架空環境での受入計画

以下は未実行の計画です。実測の合格記録ではありません。

正規の本人・自社
条件:許可された閲覧
期待結果:対象の情報だけ表示
別会社・権限不足
条件:ログイン自体は成功
期待結果:対象操作は拒否
変更の確認が欠落
条件:状態を変える要求
期待結果:拒否して業務状態を維持
停止・役割変更後
条件:古いセッションを想定
期待結果:定めた反映条件で制限

社内で使う確認票

SONAEの運用案・架空例。秘密の値を記入しないでください。

本人
保存方式・Cookie属性・停止後の反映
操作
変更API・CSRF・再認証・回復
対象
架空の会社A/B・役割・一覧/詳細/出力
受入
許可・拒否・旧セッション・記録の非出力

完了前のチェック

  • セッション・CSRF・認可を別項目にする
  • APIとレコードごとに権限を確認
  • 停止後と回復後のセッションを確認
  • 秘密を受入記録へ複製しない

一次資料と確認範囲

資料の対象条件と掲載内容を確認して構成した記事です。顧客への接続や攻撃再現はしていません。資料の改訂を自動追従するものではありません。実施直前に公式資料と配布元の最新案内を再確認してください。