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


ピックアップ記事

Google ページランク更新

2010年02月17日 過去Blog
ページランクの更新ではないのでしょうが、本日、ページランクに変化があったようです。 変化があったドメインは、最近取得した中古ドメインで、ページランクが付与されていないものでした。 既にページランクがついていたものは、そのまま現状維持でした。 Googleのインデックス更新なのか、原因は詳しくは分かりませんが、、、 本日より、複数のドメインに新しくページランクがついたので、ページランクに変化があっ…
「Google ページランク更新」をはてなブックマークに追加

WordPressのテーマ追加

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

facebook「いいね」ボタン設置トラブル

2011年05月24日 過去Blog
運営サイトにfacebookの like! ボタンを設置しようと、ここにアクセスして発行しようとしたのですが、以下のようなエラーが出て、コードが取得出来ませんでした。 Only verified developers can be added as listed developers of this application. ネットで検索すると同じような症状で困っている方もいるようなので、一応、解…
「facebook「いいね」ボタン設置トラブル」をはてなブックマークに追加

UTCと日本時間

2010年03月24日 過去Blog
UTCの0時を日本の時間に変換すると朝の九時(UTC + 9時間)。 UTC Wednesday, 24 March 2010, 00:00:00 ↓↓↓↓↓↓ Kyoto (Japan) Wednesday, 24 March 2010, 09:00:00 UTC+9 hours
「UTCと日本時間」をはてなブックマークに追加

[5]:配列データを使って、UITableViewと連携させる

2010年12月01日 過去Blog
今回のチュートリアルは、配列データを使って、UITableViewと連携させる方法です。SQLやXMLのデータを表示させるための要素になるでしょう。 今回は「フルーツ」をテーマに、名称のほか、いくつかの追加情報をもつ「フルーツオブジェクトの配列」を作成します。UITabeleViewに各フルーツの名称を表示させ、名称がクリックされるとviewが遷移し、そのフルーツの詳細情報を表示させます。 今回の記事は以下の記事を既読の方を想定しています。 [4]:View間での移動について [3]:Interface Builder と Xcode を接続する方法 [2]:Interface Builder のみで Hello World 今回学ぶこと: Navigation-Based Application の新規作成 フルーツClassのオブジェクト作成 NSArray 配列を作成し、書き込む 新規ビューの追加 viewとコードを接続する オブジェクトのデータをUITableViewに書き込む viewを遷移させ、選択された行に基づくデータを表示させる …
「[5]:配列データを使って、UITableViewと連携させる」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy