2009年11月20日 過去Blog
Zencartのセッションについてですが、以下の環境に該当する場合は、少々対応が必要なようです。
  1. サーバが専用SSLではなく、共用のSSLを利用している。
  2. カスタマイズの際にURLをそのまま張り付けて使用している。
  3. 静的htmlへのリンクがZencartのサイト内に含まれている。
私の管理するZencartのサイトは上記の全てに当てはまっていました・・・orz 解決策の前にZencartのセッションの基本的な仕組みについて説明したいと思います。

Zencartのセッションの基本的な仕組み Zen Cart のセッション情報は、ログイン時に発行される一意の文字列 (zenid) で管理されます。 管理方法としては、初期設定ファイルの内の設定(*1)によって、データベースに一時的に収納されるか、または指定のディレクトリーにファイルとして保存され、セッションの推移に伴い随時、参照・更新されていきます。 zenid は、基本的にはブラウザのクッキー (Cookie) (期限設定無し)に保存されます。 勘違いしやすいのですが、これは管理画面内の「セッション管理の設定」>「クッキー使用の有効 (TRUE) / 無効 (FALSE)」 に関わらず、ブラウザのクッキーが許可されている場合は、クッキー (Cookie) を利用し zenid を引き継ぎ維持しようとします。この設定が有効 (TRUE) であればクッキー (Cookie) 使用が必須となり、ブラウザのクッキー (Cookie) が不許可の場合や、共用SSL サーバーなどでドメインが変更され、クッキー (Cookie) の引き継ぎが不可能な場合などは、zenid 発行時にクッキー (Cookie) の設定をオンにすることを促すメッセージ (index.php?main_page=cookie_usage) が表示されます。 また、「セッション管理の設定」>「クッキー使用の設定が無効 (FALSE)」 の設定で、ブラウザのクッキーが不許可、または、SSL サーバーなどでドメインが変更されるためクッキー (Cookie) の引き継ぎが不可能な場合などは、ブラウザに渡される URL に付け足される形で zenid を引き継ぎます。 この際、URL を呼び出すのに、zen_href_link() 等 Zen Cart のリンク関数を用いていれば関数内の処理で自動的に zenid 追加されますが、独自カスタマイズなどを加えていて直接 URL をベタ書きしている様な場合は、クッキー (Cookie) 不可環境での zenid の引き継ぎが不可能になり、ログイン状態が維持できなくなったりカートの内容が空になってしまう様な現象が現れます。 クッキー (Cookie) 不可環境に対応する、または SSL サーバーを別ドメイン名で運用する場合などは、前記「セッション管理の設定/クッキー使用」の設定を無効 (FALSE) としなければなりません。しかし、前記の様に zenid が URL に付加されるためセキュリティ上は好ましくありません。 このような場合は、「SSLセッションIDチェック」、「User Agentチェック」、「IPアドレスチェック」、「ロボット(スパイダー)のセッションを防止」、「セッション再発行」の各項目を有効 (TRUE) とし、セッションなりすまし防止等、セキュリティ対策をする必要があると思います。 以下、管理画面内のセッション管理の設定内の項目の説明です。 SSLセッションIDチェック 全てのHTTPSリクエストでSSLセッションIDをチェックしますか? User Agentチェック 全てのリクエスト時にUser Agentのチェックを行いますか? 同一セッションであったとしても、User Agentをチェックし、もし違えばセッション情報を破棄します。 セッションハイジャックの防止に有効です。 IPアドレスチェック全てのリクエスト時にIPアドレスをチェックしますか? 同一セッションであったとしても、IPアドレスをチェックし、もし違えばセッション情報を破棄します。 セッションハイジャックの防止に有効です。 ロボット(スパイダー)のセッションを防止 既知のロボット(スパイダー)がセッションを開始することを防止しますか? 対象となるロボット(スパイダー)のリストは、 includes/spiders.txt に記載されていますので、必要に応じて対象を追加してください。 セッション再発行 ユーザーがログオンまたはアカウントを作成した場合にセッションIDを再発行しますか?(PHP4.1以上が必要) セッションハイジャックの防止に有効です。 IPアドレス変換の設定 IPアドレスをホストアドレスに変換しますか?注意:サーバによっては、この設定でメール送信のスタート・終了が遅くなることがあります。 *1 インストール画面でキャッシュの保存方法をデータベースなどから選択する箇所がありますが、そこの設定に関係していると思います。(未検証) また、セッション情報をファイルで保存するには、設定ファイルを直接修正する必要があります。configure.php の下部にある define(‘SQL_CACHE_METHOD’, ‘none’);  を define(‘SQL_CACHE_METHOD’, ‘file’); に変更する事で有効になります。 この記事の最初に触れましたが、以下の問題の解決策を書きます。
  1. サーバが専用SSLではなく、共用のSSLを利用している。
  2. カスタマイズの際にURLをそのまま張り付けて使用している。
  3. 静的htmlへのリンクがZencartのサイト内に含まれている。

Zencartのセッションに関して、上記のトラブルの解決策

1.サーバが専用SSLではなく、共用のSSLを利用している。 共用SSLの場合は、SSLページとそれ以外のページで、ブラウザのクッキーに保存されるドメインが変わってしまうので、セッションが引き継げなくなってしまいます。(Zencatで共用SSLを利用する場合の説明はこちらで触れています。) その解決策として、管理画面内の「セッション管理の設定」>「クッキー使用の設定」をFalseにする必要があります。前述しましたが、これはクッキーを一切使用しないという意味ではありません。ブラウザのクッキーが使用できない場合は、URLにzenidを付与して、セッションを引き継ぐということです。 問題が共用SSLを使用している点だけであれば、ブラウザのクッキーが使用できない場合も含め、「クッキー使用」をFalseにするだけで対応できます。その際のセキュリティ低下を考えると、「SSLセッションIDチェック」、「User Agentチェック」、「IPアドレスチェック」、「ロボット(スパイダー)のセッションを防止」、「セッション再発行」の各項目を有効 (TRUE) とし、セッションなりすまし防止等、セキュリティ対策をする必要があると思います。 2.カスタマイズの際にURLをそのまま張り付けて使用している。 この場合は、クッキーの使えない環境も考慮し、カスタマイズの際に張り付けたリンク箇所をセッションが引き継がれるように、zen_href_link()などを利用し、修正する必要があります。 セッションを引き継ぐリンクの貼り方についてはこちらのページを参照してください。 3.静的htmlへのリンクがZencartのサイト内に含まれている。 この場合も、「2」の問題と同様に、クッキーの使えない環境も考慮し、カスタマイズの際に張り付けたリンク箇所をセッションが引き継がれるように、zen_href_link()などを利用し、修正する必要があります。 セッションを引き継ぐリンクの貼り方についてはこちらのページを参照してください。 引用元サイト : talking about …

この投稿へのコメント

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます。
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CAPTCHA


ピックアップ記事

WordPressのテーマ追加

2009年11月19日 過去Blog
今回、このサイトを立ち上げるにあたって、wordpressをインストールしたわけですが、管理画面からテーマを適用しようとしたのですが、サーバへのFTP接続でエラーが出ました。 以前、違うブログで利用した時には、管理画面から簡単にテーマのインストールが完了したのですが、今回はサーバが違うので、サーバ環境に依存するエラーのような気がします。 とりあえず、大した問題ではないので、手っ取り早くテーマを…
「WordPressのテーマ追加」をはてなブックマークに追加

macでhostsファイルの切り替え

2010年12月08日 過去Blog
以前、macでのhostsファイルの編集方法を紹介しましたが、hostsの切り替えに便利なツールがありましたので、それを紹介します。 hoster このソフトを使えば、ターミナル上から、hostsファイルを編集する必要がなく、GUIの操作だけでhostsを変更することが可能です。頻繁にhostsの設定を変更する必要がある方にとっては、とても重宝するのではないでしょうか。…
「macでhostsファイルの切り替え」をはてなブックマークに追加

iPhone/iPadでプリントスクリーン

2011年01月08日 過去Blog
iPhone/iPadでプリントスクリーンをするには、ホームボタンと電源を切るボタン(正式名称不明^^;)を同時に押します。 作成されたファイルは、写真(カメラロール)内に保存されます。
「iPhone/iPadでプリントスクリーン」をはてなブックマークに追加

phpmyadmin のインポートサイズの最大値を変更する

2010年04月03日 過去Blog
php.iniを適当なサイズに変更します。 memory_limit 32M post_max_size 50M upload_max_filesize 50M php.iniを変更したら httpdをリスタートします。 service httpd restart これで、大きなサイズでもインポート可能になります。 cheapest generic xanax…
「phpmyadmin のインポートサイズの最大値を変更する」をはてなブックマークに追加

iTunes Store の購入履歴とオーダー(注文)番号を表示する方法

2011年01月12日 過去Blog
iTunes Store の購入履歴とオーダー(注文)番号を表示する方法
iTunes Store の購入履歴とオーダー(注文)番号を表示する方法 iTunes がインストールされているコンピュータをお使いの場合は、こちら をクリックすると、 iTunes を起動して購入履歴を表示できます。Apple ID とパスワードの入力を求められます。 次の手順で iTunes Store および Mac App Store で購入したコンテンツのリストを表示することもできます。…
「iTunes Store の購入履歴とオーダー(注文)番号を表示する方法」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy