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


ピックアップ記事

html、CSS テキストの自動折り返しを禁止する

2010年04月16日 過去Blog
<strong>white-space</strong> normal 標準 (初期値) nowrap 自動的な折り返しを禁止する prozac and alcohol…
「html、CSS テキストの自動折り返しを禁止する」をはてなブックマークに追加

linux : chomod,chown パーミッション変更

2009年11月27日 過去Blog
chown USER_NAME /DIR_PATH/ chown USER_NAME -R /DIR_PATH/ -Rをつけることで指定ディレクトリ以下の全てのディレクトリ、ファイルの所有者を変更します。 physical therapy chicago…
「linux : chomod,chown パーミッション変更」をはてなブックマークに追加

iphoneアプリ開発に役立つリンク集

2010年11月19日 過去Blog
iOS Reference Library 日本語に翻訳されたiOSのドキュメントです。 スタンフォードiPhone Application Programming アップルの現役社員による講義(スタンフォード大学の授業)が見られます。 iPhone Application Programming Course (CS 193P) 2010 Winter 講義動画…
「iphoneアプリ開発に役立つリンク集」をはてなブックマークに追加

zencart ダウンロード商品の登録方法

2010年06月30日 過去Blog
以下のサイトを参考にすれば、ダウンロード商品の登録が出来ました。 http://zencart-pro.com/help/node/180
「zencart ダウンロード商品の登録方法」をはてなブックマークに追加

[エラー]modifying layer that is being finalized

2010年12月09日 過去Blog
このエラーは、autorelease によってリリースされた(される)コントロールを自分自身で release を読んで解放しようとした時に、おこるエラーの様です。 私の場合は、以下のようなコードを実行したら3回ほどクリックすると落ちました。 ボタンをクリックするとdivision.text にデータベースから抜き出した文字列を表示するというコードです。 division.text = [N…
「[エラー]modifying layer that is being finalized」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy