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*****