Katsunori IMAI
imai****@glatt*****
2004年 5月 7日 (金) 15:36:37 JST
田村さん、こんにちは。 今井と申します。 osCommerceの日本語化など、いつもありがとうございます。 以前MLに流されていたセッションハイジャック対策に関し、 Recreate Sessionのソースを持ってきて見てみたのですが、 気になることがありましたので、メールさせていただきます。 https:に切り替えるところ(たとえばログイン)で新たにとっ たsidを、http:(たとえばカタログページ)でもそのまま使っ ているので、 結局セキュアにしたいページで使われているsidがSSLを使用せ ずに流れてしまい、セッションハイジャック対策にはなってな いのではないでしょうか? 例えばログイン後の、画面のナビゲータ部分 トップ >> カタログ のカタログのリンクは、http: で、そのURLにかかれている osCsidは、ログイン時に新しくふられたものです。http: になっ ているということは、ここをクリックすると暗号化されずにそ のURLがながれるので、sidを盗むことは可能です。 このsidをつかって、他のブラウザで https://foo.bar.baz/catalog/account.php?osCsid=盗んだsid でアクセスすれば、(そのsidがサーバで有効な間は)ログイ ンすることなくその人のアカウント情報が見れてしまいます。 この例は、URL上にsidがある例ですが、クッキーもセキュアクッ キーになっていないので、URL上にない場合でもsidは暗号化さ れずに流れています。 セッションハイジャック対策をするには、 SSL用のsidは、非SSLのときにはURL上にもHTMLヘッダ(cookie )にもHTML本文にも一切現れないようにして、sidをSSL用、非 SSL用で完全に分けないと、セッションハイジャック対策には ならないと思います。(結構大変なはずです。^^;) (ご参考) http://www.ipa.go.jp/security/ciadr/20030808cookie-secure.html On Mon, 26 Apr 2004 10:21:41 +0900 TAMURA Toshihiko <tamur****@bitsc*****> wrote: > こんにちは、田村です。 > > osCommerceで運用しているサイトに、 > 外部のサイトからセッションIDの付いたURLでリンクされると、 > そこからやってきたユーザのセッションが区別できなくなって、 > 他人の名前やショッピングカートが見えてしまう場合があります。 > > 対策としては、session.referer_check の設定を利用するのが > 簡単で効果があります。 > ただ、ページビューの多いサイトでは、それでも防ぎきることが > できませんので、MS2以降で組み込まれた(?) `Recreate Session'を > MS1日本語版に組み込みました。 > > # `Recreate Session'はMS2では実際には動く状態になっていません。 > > この変更は実サイトでもテストしているので大きな問題はないと > 思いますが、何かお気づきの点がありましたら教えてください。 > > > (参考) session.referer_check > http://jp.php.net/manual/ja/ref.session.php > > ------------------------------------------------------------ > ●現象 > osCommerce において、BBSや検索サイトの検索結果から`osCsid=...'と > いったセッションID付きURLでサイトを訪れる場合がある。 > 現在、この現象を確認している検索エンジンには MSN がある。 > > これにより、同じセッションIDを持ったユーザが複数存在することになり、 > いわゆるセッションハイジャックの状態となる。 > > ●対策1 > php.ini の設定 session.referer_check は有効。 > しかし、Mac のブラウザ Safari は外部サイトの HTTP_REFERER を > 返さないので、session.referer_check では解決できない。 > > ●対策2 > ログイン時にセッションIDを付け替える(Recreate Session)。 > > ●その他 > Contributions: spiderkiller > http://www.oscommerce.com/community/contributions,1089 > ロボットのアクセス時にセッションIDを付加しない。 > 少し処理は重い。 > > ------------------------------------------------------------ > Recreate Session に関する変更点 > > ●変更したファイル(Recreate Session): > http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/tep-j/oscommerce-2.2ms1j/ > からダウンロードできます。 > catalog/create_account_process.php > catalog/login.php > catalog/includes/functions/html_output.php > catalog/includes/functions/sessions.php > catalog/install/oscommerce.sql > > ●追加する必要のあるSQL > INSERT INTO configuration_group VALUES ('15', 'セッション', > 'セッション制御に関するオプション', '15', '1'); > > INSERT INTO configuration (configuration_title, configuration_key, > configuration_value, configuration_description, configuration_group_id, > sort_order, set_function, date_added) VALUES ('セッションの再生成', > 'SESSION_RECREATE', 'False', > '顧客のログオンまたはアカウント作成のときに,新しいセッションIDをつけるた > めにセッションを再生成します. (PHP >=4.1 needed).', '15', '7', > 'tep_cfg_select_option(array(\'True\', \'False\'), ', now()); > > ●管理画面での設定 > [基本設定]-[セッション]-[セッションの再生成]を`True'にセットする。 > ------------------------------------------------------------ > > -- > 田村敏彦 / 株式会社ビットスコープ > E-mail:tamur****@bitsc***** > http://www.bitscope.co.jp/ > > > > _______________________________________________ > Tep-j-general mailing list > Tep-j****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/tep-j-general