talking about …

by tango

Zen Cart のセッション管理

備忘録の意味合いで書き記しておきます。

※この記事の内容を自分で書いたかのようにそのまま転用されている方がいます。
転載等するのであれば、その文章が転載である旨、転載元をきちんと明記してください。

Zen Cart のセッション情報は、ログイン時に発行される一意の文字列 zenid で管理されます。
その内容は、初期設定ファイルの内の設定によって、データベースに一時的に収納されるか、または指定のディレクトリーにファイルとして保存され、セッションの推移に伴い随時、参照・更新されていきます。

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) とし、セッションなりすまし防止等、セキュリティ対策をする必要があると思います。

Leave a Reply

Time limit is exhausted. Please reload CAPTCHA.

COPYRIGHT (c) 2006-2024 ZERO OFFICE CO., LTD. | Powered by WordPress