[PHP-users 8789] Re: セッションID とセッションの安全性について

Yasuo Ohgaki php-users@php.gr.jp
Fri, 19 Jul 2002 18:30:59 +0900


大垣です。

zaki wrote:
> 質問(1)
> セッションIDを透過的に渡してるんですけど、
> php.4.2.1でソースからconfigureするときに、「--enable-trans-sid」スイッチがないみたいで、
> php.iniみたら、最初からtrans-sid=1になってるんですけど、
> これはデフォルトで透過的に渡すようになってるんですか?

いけないです。なっています。気が付きませんでした。
4.2.2ではtrans-sid=0になるように調整してみます。

理由:

1) セキュリティー上trans-sidは好ましくない
2) trans-sidがおかしなHTML/JavaScriptを出力する事がある
3) trans-sidは正しいXHTMLを出力しない
4) 4.1.xまではデフォルトではなかった
5) 元々デフォルトで有効にされるべき機能ではない

デフォルトでONにするつもりではなく、confiugreオ
プションを外した時にphp.iniでデフォルト有効を無効
にし忘れただけと思います。

> 質問(2)
> frameを使って画面2分割にして、frameAのフォームボタンをして、frameBにセッションID渡そうとするんですが、
> POSTで透過的に渡せずに、なぜかGETで渡っちゃうんですけど、
> ($_POSTは空っぽで、$_GETにPHPSESSIDがはいってる状態です。)
> これは仕様なんですか?
> もしPOSTで渡せるのであればヒントをいただきたいです。

普通、Trans SIDは使わない主義なので他の方に譲ります。

# 一般ユーザーにSIDが含まれるURLに関する危険性を
# 周知徹底させるのは不可能です。ユーザー情報の安全性など
# のリスクを考え、どうしようもない携帯以外は使いません。

> 
> 質問(3)
> 最後にセッション自体の安全性についてなんですが、
> セッション盗まれるケースとかそんなに多いものなんでしょうか?
> 自分のサーバのテストしてみたいので、攻撃手法・ツールとかがあれば教えていただきたいです。

盗める時は、簡単に盗めます。

trans sidが有効な場合、サーバーのセッションの有効期間が長
過ぎて友人にSID付きのURLを送ってしまう。

共用コンピュータを使っている場合にtrans SIDが有効になってい
てセッション有効期限が切れる前に、他ユーザーが使ってしまう。
SSL無しの場合、隣のデスクの同僚のセッションIDは簡単に盗める
場合が多いでしょう。
(SW HUBがあるとそうも行きませんが、ない環境も沢山あるはず)

Cross Site Scriptingが可能であれば、いくらでも盗めます。
(ただし、盗みたいユーザーを自分のサイトなどに誘導する必要
がありますが)

これもアプリケーションで簡単に対策がとれるのですが、力業によ
る攻撃はいつでも可能です。

以上がメジャーどころと思います。

私はセッションクッキーを極力使うよう強く奨めています。
遠くない昔、セッション(クッキー)の有効期間を1週間以上を奨
める方もいましたがこれは論外です。

有料ですが、7/30のSRAオープンセミナーでこの辺りのリスクに
ついてもご紹介します。募集定員が少ないので、まだ予約できるか
どうか判りませんが、よろしければどうぞ。

http://www.sra.co.jp/public/sra/event_seminar/seminar2002/020730.html

--
Yasuo Ohgaki