[Tep-j-general] Re: IE6だけログインできない

Back to archive index

Seiji Sogabe sogab****@alles*****
2006年 3月 26日 (日) 00:09:12 JST


曽我部です。

hamada wrote:
> 常識的に考えて
> 
> 「クライアントから渡されたセッションIDが現在有効なセッションと一致しない
> 場合、そのセッションIDは妙→新たにセッションを生成すべき」
> 
> な気がするんすが、PHPはなにも疑問を抱かず、言われた通りのセッションIDで
> 律義にセッションを作成しちゃうと言う。

register_globals問題もですが、これもどうかと思う動作ですね。
Session Fixationについて、Googleに聞いてみると大概PHPの話になるのですが、
PHP以外は大丈夫なんでしょうか。ここ数年Javaで開発とかサポートをしていますが、
あまり聞いたことないです。

> Strict Session管理パッチ
> http://d.hatena.ne.jp/masugata/20060202#p2
> 
> ↑こんなのもありますけど、ソースからパッチ当ててコンパイルせにゃならんと
> なると敷居が高く。

たしかに、ソースからコンパイルしてインストールしているならいいのですが、
パッケージ管理に依存していると面倒ですね。hardened phpに入れ替えようか
と思ったのですが、osCommerceが動かなくなるのも困るので。

> 「そのセッションIDは今“アリ”なのか“ナシ”なのか」
> 
> さえ解れば良い訳なんですが、どうもPHPのセッション関数にはそうした動作を
> してくれる関数が見当たらないみたいなんで、
> 
> ・クライアントからセッションID渡されたら
> ・セッションを開始する前に
> ・/tmpにセッションIDに相当するファイルがあるか調べて
> ・無ければあらたにセッションを生成する
> 
> みたいな動作をすれば良いのかなぁ、とか思うんですが、未検証。存在の有無だ
> けでなくタイプスタンプ等も見たほうが良いのかな?

ガーベージコレクションの問題もあるので、タイムスタンプをみたほうがいいと
思いますが、セッションをDBに保存している場合もありますし。環境次第ですね。

> それとも、当方が見つけられないだけでPHPにもそういう関数あるのかなぁ?
> ホント、有っても全然不思議はないと思うんですがねぇ。

セッションを開始する前ではありませんが、MS2やEthnaのセッションクラスのように、
IPアドレスやUserAgentでチェックしたり、

PHP と Web アプリケーションのセキュリティについてのメモ
 i. Session Fixation(セッション固定)
http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html#PHP_Session_Fixation

のようにしたほうがいいと思います。

PHP サイバーテロの技法 - 攻撃と防御の実際
http://www.socym.co.jp/pages/books_annai/pc_gengo.html#php_terro
Webアプリセキュリティ対策入門
http://www.amazon.co.jp/exec/obidos/ASIN/4774127027/250-0898488-0214625

とか最近読んでますが難しいです。言語レベルもしくはフレームワークで
有る程度サポートがないと、開発期間が短いと極めて困難ですね。


では。
-- 
sogab****@alles*****



Tep-j-general メーリングリストの案内
Back to archive index