[PHP-users 35336] Re: セッションハイジャックと session_regenerate_id() について

Ryo Hayashi ryo @ spais.jp
2010年 8月 20日 (金) 19:04:17 JST


林と申します。

> > 確認をしたいのですが、「ログインセッションの認証」という表現をされて
いますが、
> > これは「ユーザ名とパスワードによる認証」とは別の意味でしょうか?
前者は認証を行う主体について述べていますが、後者は認証の方法について述べ
ています。両者を考慮するならば「ログインセッションを、ユーザ名とパスワー
ドで認証する」と表現するのが妥当だと思います。

> > そうだとしますと、セッション変数に格納された IPアドレスやユーザー
エージェント
> > について、リクエスト毎に $_SERVER のそれらと一致するかをチェックする
ことを
> > 「認証」と言われているのでしょうか?それとも、別の意味でしょうか?
認証とは、対象の正当性を評価する行為です。
HTTP はステートレスです。
一回のリクエストで評価した正当性は、HTTP のリクエストがステートレスであ
る以上何の考慮もせずに持続するべきではありません。

僕の言っている認証は「そのリクエストがセッションを維持できる条件に合致し
ている事の評価」ですので、いわゆるパスワード認証などとは別のものです。
そもそもセッションハイジャックについて考えるならばパスワード認証などは余
り関係ありません。
セッションハイジャックは「複数のリクエスト中維持されるデータ」を盗用する
事にありますので、盗用されているかどうかをリクエスト毎に評価する必要があ
ります。

この評価をさして僕は”認証”と表現しました。
ちょっとわかりにくいかもしれませんが、タイムアウトも広義には認証です。要
するにエンドユーザーの受動的行動に限らず、正当性評価の手法として認証があ
ると考えてもらった方がわかりやすいかもしれません。


PHP-users メーリングリストの案内