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>

ピックアップ記事

[2]:Interface Builder のみで Hello World

2010年11月19日 過去Blog
前回は、UITableViewを使って”HelloWorld”を表示しましたが、今回は、Interface Builderを使って、コードを書かずに"HelloWorld"を表示させてみます。 非常に簡単なアプリではありますが、Interface Builderを理解する最初のステップです。 今回の流れ: View Based Projectの新規作成 iPhone シュミレータで確認 UIの要素をホーム画面に追加 コードを実行 …
「[2]:Interface Builder のみで Hello World」をはてなブックマークに追加

twitterの登録メールの確認がエラーになる件

2011年01月04日 過去Blog
twitterで登録メールの確認手続きを行っていた際に以下のようなエラーが出ました。 「Hold up! Sorry, the profile you were trying to view has been suspended due to strange activity 」 なにもオカしいことはしていないはずなので、困っていたのですが、原因は単純でした。 twitterのヘルプページに書い…
「twitterの登録メールの確認がエラーになる件」をはてなブックマークに追加

WordPressのURL(パーマリンクの設定)

2009年11月20日 過去Blog
当サイトの記事は「http://yamazon.org/zencart/76」といったURLになっていますが、このように「ドメイン名/カテゴリ名/記事ID」の階層をもったURLにするためには Wordpressの管理画面内の「設定」>「パーマリンク設定」の中の「一般的な設定」内の「カスタム構造」を選択し、「/%category%/%post_id%」と指定します。 もっと詳しいパーマリンクの使…
「WordPressのURL(パーマリンクの設定)」をはてなブックマークに追加

iPhone メッセージの移動ができません

2011年01月19日 過去Blog
またまた、i.softbank.jpのメールでエラーが出ました。 以下のようなアラートが表示され、送信済メッセージが削除出来ません。 メッセージの移動ができません このメッセージはメールボックス"ゴミ箱"へ移動できません。 …
「iPhone メッセージの移動ができません」をはてなブックマークに追加

dreamweaver msvcr80.dll のエラー

2010年01月16日 過去Blog
ここ数日、いきなり複数台のPCにインストールしていたdreamweaverが全て、起動時に強制終了される状態がつづいていました。 Windowsのコントロールパネルからイベントビューアをみると、msvcr80.dllがエラーを起こしているようなのですが、検索しても解決策はヒットせず、adobeのサイトを参考にレジストリなどを触ってみるも直接的な解決には至りませんでした。 DWでサイトとして定義…
「dreamweaver  msvcr80.dll のエラー」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy