TAMURA Toshihiko
tamur****@bitsc*****
2004年 4月 26日 (月) 10:09:19 JST
こんにちは、田村です。 osCommerceで運用しているサイトに、 外部のサイトからセッションIDの付いたURLでリンクされると、 そこからやってきたユーザのセッションが区別できなくなって、 他人の名前やショッピングカートが見えてしまう場合があります。 対策としては、session.referer_check の設定を利用するのが 簡単で効果があります。 ただ、ページビューの多いサイトでは、それでも防ぎきることが できませんので、MS2移行で組み込まれた(?) `Recreate Session'を 組み込みました。 # `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/