質問: $_SESSION['token'] { で確認 --- 以上の流れで心配なのが、 ・2の時点でがっつりと個人情報が一覧表示されるのですが、この時のチェックって 【ログインしているかどうか、if ( isset($_SESSION['user_name'] ) { で確認】 のみで良いのでしょうか? この時点でのCSRFの危険はないのでしょうか? 4では、トークンが一致する時点で、必ずログインされているはずなので、★のチェックは必要ないかと思い、省略しておりますが、問題ありますでしょうか? その他にも、脆弱性がありましたらアドバイス頂ければ非常に助かります・・・。 詳しい方、どうかお願いします。
回答: 実際のところ、リクエスト偽造による自動処理を弾くには、ログイン画面にもCSRF対策を施すべきだろうと思います。 本物そっくりのログイン画面を用意され、結果的に偽のログインリクエストを送られた場合、CSRF対策をしていなければ、不正ログインを弾くことができません。トップ画面にフォームがある場合、トークンを抜かれ、CSRF対策が無効化された状態で次のリクエストが送られることも考えられます。 もちろんこの場合、すでにユーザIDとパスワードを抜かれていますから、正規ルートで別途不正アクセスはできてしまうわけですけど、それについてはIPやユーザエージェントなどの判定で、メールなどでユーザに警告することもできます。 また、ログイン直後の画面にいきなり個人情報一覧が表示されるなら、上記理由からも個人情報漏洩しやすいおいしいシステムです。もしそうなら、システムデザインも見なおしたほうが良いかもしれません。