[PHP-users 33989] Re: クッキーを受け付けないUserAgent(日本のケータイに限らず)に対してもセッション管理しつつセッションハイジャックを防ぎたい

Ushiro ushi9999 @ yahoo.co.jp
2008年 8月 19日 (火) 16:57:51 JST


こんにちは。ushiと申します。

最近モバイルのセキュリティチェック周りを作っていたので
非常に興味深く見ています。

私の場合は結局、モバイルに関してはCookieを一切使用せず(AUなど使用できる
端末でも)、セッションIDを引き回す方法をとっています。

セッションが妥当かどうかは、UserAgentを判定材料の一つにしてましたが、
ここでひっかかりました。
UserAgentは同一端末でも異なる場合があるのです。

なので、
> http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html#PHP_Session_Hijacking

で、
        $fingerprint .= $_SERVER['HTTP_USER_AGENT'];

として判定すると、誤ってセッションを切ってしまうことがあります。

具体例としては下記のようなものがありました。
DoCoMo/2.0 N705imyu(c100;TC;W30H20)
DoCoMo/2.0 N705imyu(c100;TB;W30H20)
(TCとTBの違いはDoCoMoのサイト参照。)

UserAgentまるごと比較するのではなく、機種名など絞って採用する必要があり
ます。

※余談ですが、PCブラウザでも全く異なるUserAgentを送ってくるものが
ありました。


==========

IPアドレスでのチェックは追加・変更の管理をしきれないため、採用していませ
ん。

他に何かチェックあるでしょうか?
UserAgentだけだと、偶然にも同一端末でアクセスされると(悪意がないことも
ある)、チェック通ってしまうので。
有効期限を短くして(分単位)、検索にかかったりリンク貼られたりした場合に
は備えていますが…

私も実際にこの辺実装されている方の話を聞いてみたいです。
やはり端末固有ID使用でしょうか。(別レスで危険と書いてありますが)




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