2020年8月27日
Zen Cart:Google Chrome SameSite Cookie対応について
2020年 2月頃にGoogleがブラウザChromeて、CookieのSameSiteのデフォルトの挙動を「None」から「Lax」に変更するということで、当時急いで修正したのが記憶に新しいですが、その後、新型コロナの影響で適用を延ばすということで、しばらくは問題もなく過ぎていきました。
最近、7月中旬からこの対応を含んだアップデートが提供されたようで、影響が出てきています。Zen Cartにおいて顕著にこの対応が影響するのは、外部サイトと連携する部分、つまりクレジットカード決済です。
Zen Cartで注文する直前まで進めてクレジットカード決済で、カード決済会社の画面でクレジットカード情報を入力し、戻ってくると「タイムアウト」になってしまう。そういう現象が発生しています。
原因
Zen CartのセッションはデフォルトでCookieにセッションIDを保存しています。よって、Cookieが取れなくなると自動的にログアウト扱いになるので「タイムアウト」画面が表示されます。
SameSite=Laxでは、「外部サイトがPOSTする場合、Cookieヘッダーは渡らない」仕様になっています。よって、SameSiteの影響を受けるかどうかは外部サイトがPOSTをしてZen Cartに戻ってくる場合に限ります。
注意点:SameSiteのiOS12/MacOS10.14対応
iOS12より前の機種と、MacOS 10.14より前の場合に「SameSite=None」が設定されていると「SameSite=Strict」扱いになってしまい、外部サイト連携ができなくなります。よって、$__SERVER['HTTP_USER_AGENT']で判定をして、該当の場合はSameSite属性を発行しないようにします。
対応:cookie_testに注意!
- ショップをSSL化してクッキーのSecure属性をTrueにする
- セッション用に使うクッキーのSameSite=Noneをする
- cookie_test というクッキーのSameSite=Noneをする
※3つ目に気づかずにハマりました。Zen CartではCookieが有効かどうかを判断するのにcookie_testというCookieを発行していますが、これにもSameSite対応をする必要があります。
- includes/init_includes/init_sessions.php (もしくは includes/init_includes/overrides/init_sessions.php)にて、パスにSameSite対応をしてSecureにする
$path = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME']));
if (defined('SESSION_USE_ROOT_COOKIE_PATH') && SESSION_USE_ROOT_COOKIE_PATH == 'True') $path = '/';
$path = (defined('CUSTOM_COOKIE_PATH')) ? CUSTOM_COOKIE_PATH : $path;
$domainPrefix = (!defined('SESSION_ADD_PERIOD_PREFIX') || SESSION_ADD_PERIOD_PREFIX == 'True') ? '.' : '';
$secureFlag = ((ENABLE_SSL 'true' && substr(HTTP_SERVER, 0, 6) 'https:' && substr(HTTPS_SERVER, 0, 6) 'https:') || (ENABLE_SSL 'false' && substr(HTTP_SERVER, 0, 6) == 'https:')) ? TRUE : FALSE;
// 関数追加
function is_before_iOS12() {
// iOS12より前かどうか
if (preg_match('@iPhone; CPU iPhone OS (1[0-2]|[0-9][^0-9])@', $_SERVER['HTTP_USER_AGENT'])) { return true; }
if (preg_match('@iPad; CPU OS (1[0-2]|[0-9][^0-9])@', $_SERVER['HTTP_USER_AGENT'])) { return true; }
if (preg_match('@iPod touch; CPU iPhone OS (1[0-2]|[0-9][^0-9])@', $_SERVER['HTTP_USER_AGENT'])) { return true; }
// MacOS 10.14より前かどうか
if (preg_match('@Macintosh; Intel Mac OS X 10_(1[0-4]|[0-9][^0-9]).*Safari@', $_SERVER['HTTP_USER_AGENT'])) { return true; }
return false;
}
// 下記1行を追記
$path .= is_before_iOS12() ? '' : '; SameSite=None';
if (PHP_VERSION >= '5.2.0') {
session_set_cookie_params(0, $path, (zen_not_null($cookieDomain) ? $domainPrefix . $cookieDomain : ''), $secureFlag, TRUE);
} else {
session_set_cookie_params(0, $path, (zen_not_null($cookieDomain) ? $domainPrefix . $cookieDomain : ''), $secureFlag);
}
(中略)
zen_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, '/', (zen_not_null($current_domain) ? $current_domain : ''));
↓
zen_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, '/'. is_before_iOS12() ? '' : '; SameSite=None', (zen_not_null($current_domain) ? $current_domain : ''), $secureFlag);
この問題への対処でお困りのことがあれば、ご相談ください(有償対応となります)。
その他の記事
【Shopify(ショピファイ)事例】現代ギター様オンラインショップ
- 2020年7月 6日
- 投稿者 : 八木
「Zen Cart 1.5.6」がリリースされました(Zen Cart.com公式情報から)
- 2018年12月12日
- 投稿者 : 中野
Zen Cart公式:PHPMailerの脆弱性パッチ(5.2.21)適用について
- 2017年1月 2日
- 投稿者 : 中野
Zen-Cart.com お知らせ:PayPalスタンダード決済で「,」が使えなくなる
- 2016年12月12日
- 投稿者 : 中野
Zen Cart 1.6 開発の最新状況(Zen-Cart公式サイトから)
- 2016年7月14日
- 投稿者 : 中野
Zen Cart バグ:1.5.0~1.5.5で管理者権限を不正に変更できる不具合対応ファイル(admin_account.php)提供
- 2016年5月13日
- 投稿者 : 中野
Zen Cart 1.5.5がリリースされました(Zen-Cart公式サイト情報)
- 2016年3月24日
- 投稿者 : 中野
Zen Cart:PAY.JPを利用したクレジットカード決済モジュールを開発しました
- 2016年3月 3日
- 投稿者 : 竹村
ECサイトのデータベース暗号化(TDE)を試す(その1:Amazon Auroraに接続してみる)
- 2016年2月 9日
- 投稿者 : 金田
Zen Cartで構築した予約システムの負荷対策(2):インスタンスの変更によるパフォーマンス向上と費用対効果
- 2016年1月26日
- 投稿者 : 金田
Zen Cart:WebPay(クレジットカード決済サービス)を利用した支払いモジュールを開発しました
- 2016年1月14日
- 投稿者 : 竹村
Zen Cartで構築した予約システムの負荷対策(1):DB読み出しクエリー数を削減して改善する
- 2016年1月13日
- 投稿者 : 金田
Zen Cart 1.5.5 / Zen Cart 1.6 の情報(Zen Cart開発チームから)
- 2015年12月16日
- 投稿者 : 中野
Zen Cart:WebPayとPay.JPのクレジットカード決済モジュールを開発中です
- 2015年11月 4日
- 投稿者 : 中野
Zen Cart 高速化:ハイエンド版「かんたんカテゴリ管理」画面を商品数10万でも快適に
- 2015年9月16日
- 投稿者 : 金田
Zen Cartハイエンド版の機能拡張:退会機能
- 2015年9月 3日
- 投稿者 : 竹村
Zen Cartハイエンド版のモジュール:かんたん顧客管理機能でより詳細な絞り込みを
- 2015年8月28日
- 投稿者 : 竹村
Zen Cart ECサイト構築事例:「E-3 (イースリー)ショップ)」様Webサイト
- 2015年7月27日
- 投稿者 : ARK-Web
Zen Cartカスタマイズ:商品情報や購入ボタンをランディングページに埋め込むAPIモジュール開発
- 2015年6月30日
- 投稿者 : 中野
Zen CartへのSSL 3.0の脆弱性POODLEの影響と対応について(Zen Cart公式サイト情報)
- 2014年10月16日
- 投稿者 : 中野
取材されました:現代ギター社様「GGインターネットショップ」Zen Cart導入事例
- 2014年9月29日
- 投稿者 : 中野
Zen Cart 1.5.3がリリースされました(Zen-Cart.comより)
- 2014年7月 8日
- 投稿者 : 中野
Zen Cart 最新版1.5.3と1.6.0のリリースについて(zen-cart.com公式情報)
- 2014年5月26日
- 投稿者 : 中野
Zen Cartでショッピングモールや他のECサイトと在庫連動(カスタマイズ開発)
- 2014年4月24日
- 投稿者 : 中野
Zen Cartのカスタマイズ:外部のメール配信サービスと連携させる
- 2014年4月16日
- 投稿者 : 中野
Zen Cartのセキュリティー:PHPのCGI脆弱性、Open SSLの深刻な問題(Zen-Cart.comより)
- 2014年4月 9日
- 投稿者 : 中野
Zen Cartハイエンド版のモジュール:point_basedeでポイント管理を行う
- 2014年1月29日
- 投稿者 : 竹村
Zen Cartのセキュリティー保守・脆弱性パッチ適用などでお困りですか?
- 2014年1月 8日
- 投稿者 : ARK-Web
Zen Cartハイエンド版のモジュール:social_buttonsによりコンテンツを共有する
- 2013年12月11日
- 投稿者 : 竹村
「Zen Cartのカスタマイズ」ページを公開しました
- 2013年11月29日
- 投稿者 : 中野
Zen Cartハイエンド版のモジュール:am_ajax_addressで郵便番号による住所自動入力をサポート
- 2013年11月28日
- 投稿者 : 竹村
Zen Cart1.3.0.2 EUC-JP版とPHP5.4の組み合わせで日本語(マルチバイト文字)が表示されない障害
- 2013年11月19日
- 投稿者 : 竹村
【消費税増税】Zen Cartで消費税を変更するには:1.3.0.2系と1.5.1系の場合
- 2013年10月18日
- 投稿者 : 竹村
Zen Cartハイエンド版のモジュール:product_csvで商品データの一括インポート・一括エクスポートをする
- 2013年9月26日
- 投稿者 : 竹村
Zen Cartハイエンド版のモジュール:email_templateで会員登録や注文時のメールの内容を変更する
- 2013年9月11日
- 投稿者 : 竹村
Zen Cartハイエンド版のモジュール:easy_adminで管理画面のメニューを自由にカスタマイズする
- 2013年8月21日
- 投稿者 : 竹村
Zen Cartハイエンド版の特徴(2):addon_modulesで画面ブロックの柔軟なレイアウトを
- 2013年8月 6日
- 投稿者 : 竹村
Zen Cartハイエンド版の特徴(1):addon_modulesによる機能追加
- 2013年7月24日
- 投稿者 : 竹村
Zen Cartハイエンド(Zen Cart 1.5をベースとした独自機能拡張版)をデモサイトでお試しいただけます
- 2013年7月22日
- 投稿者 : 中野
Zen Cartハイエンド版の活用事例:商品納入業者が管理画面にログインできるようにする
- 2013年7月16日
- 投稿者 : 竹村
Zen Cartハイエンド版:Zen Cart 1.5から準拠している「PA-DSS」とは
- 2013年7月 9日
- 投稿者 : 竹村
Zen Cart ハイエンド版:連載スタートにあたって(ポイント制, ゲスト購入, スマートフォン対応...)
- 2013年7月 2日
- 投稿者 : 竹村
事例:現代ギター様ECサイトにスマートフォン版サイトを追加しました
- 2013年1月22日
- 投稿者 : 小森
株式会社ヒーロー様「手ぶらでBBQ(手ぶらでバーベキュー)」予約サイトの構築をお手伝いしました
- 2012年7月23日
- 投稿者 : 八木
Zen Cart:多店舗在庫管理システム『zaiko robot』にZen Cartが対応しました
- 2010年1月15日
- 投稿者 : 野島
Zen Cart構築事例:『楽屋足袋(R)』で有名なガクヤ株式会社様ショップサイトのリニューアルをお手伝いしました
- 2009年10月26日
- 投稿者 : 八木
Zen Cartでクレジットカード決済を導入する際の検討ポイントは?
- 2009年7月17日
- 投稿者 : 近藤
Zen-Cart.JP:オープンソースカンファレンス(OSC)2009 Kansaiにお手伝い参加してきました
- 2009年7月16日
- 投稿者 : 中野
Zen Cartの豊富なモジュールを集めた「Zen-Cartマーケットプレイス」がオープン(by zen-deraプロジェクトさん)
- 2009年7月 2日
- 投稿者 : 中野
Zen CartとEC-CUBEの機能比較表(概要)を公開しました
- 2009年6月30日
- 投稿者 : 中野
Zen Cart+Movable Type構築事例:HTM(ホリデイツアーズ ミクロネシア)グアム様サイトのリニューアル
- 2009年6月12日
- 投稿者 : 中野
アークウェブのお手伝い事例:決済代行サービスの「デジタルチェック」様のZen Cart用決済モジュール開発
- 2009年5月15日
- 投稿者 : 志田
アークウェブお手伝い事例:メッセンジャーバッグブランド「TIMBUK2(ティンバックツー)」のサイトが09春夏リニューアル!
- 2009年4月 2日
- 投稿者 : 近藤
Webアクセシビリティ:オープンソースのスクリーンリーダーNVDAでZen-Cartをブラウジングしてみる
- 2009年3月13日
- 投稿者 : 小森
Zen-Cart.JPの最近の取り組み:「Zen Cart.JPサイトをわかりやすくしよう!」が進んでいます
- 2009年3月 5日
- 投稿者 : 近藤
Zen Cartのアクセシビリティ対応:ホームページリーダー、WebInspector、キーボード操作のテストを終えました
- 2009年2月25日
- 投稿者 : 中野
Zen Cart:「Zen-Cart.JPのご紹介とアークウェブの取り組み」というページを公開しました
- 2009年2月13日
- 投稿者 : 中野
Zen Cart:2009年はZen Cart2.0、アクセシビリティ対応、管理画面の改善に取り組みます
- 2009年2月 5日
- 投稿者 : 中野
Zen Cart:Webデザイン会社様などのECサイト構築案件をお手伝いできます
- 2009年1月26日
- 投稿者 : 中野
Zen Cart:Zen Cartでの海外向け・多言語ECサイト構築ソリューションについて
- 2009年1月23日
- 投稿者 : 中野
アークウェブお手伝い事例:メッセンジャーバッグブランド「Timbuk2(ティンバックツー)」のサイトがリニューアルしました。
- 2008年9月24日
- 投稿者 : 近藤
「Zen Cartによるオンラインショップ構築・運用テクニック」:通販サイトに本格的に取り組みたい方にもオススメ
- 2008年7月 9日
- 投稿者 : 進地
Zen Cart:ソリューションページを刷新し「ハイエンド版」「モバイル版」など追加
- 2008年6月 6日
- 投稿者 : 中野
「Zen Cartによるオンラインショップ構築・運用テクニック」:チュートリアルと必須設定は、デモ・ショップを触りながら読むのがオススメ
- 2008年6月 4日
- 投稿者 : 八木
「Zen Cartによるオンラインショップ構築・運用テクニック」:デザインテンプレートセットを公開
- 2008年5月29日
- 投稿者 : 小森
「Zen Cartによるオンラインショップ構築・運用テクニック」:日本語版の生い立ちやマーケティングについても触れています
- 2008年5月27日
- 投稿者 : 中野
Zen-Cart.JPから「Zen Cartによるオンラインショップ構築・運用テクニック」を出しました!
- 2008年4月14日
- 投稿者 : 進地
アークウェブお手伝い事例:ヨガブランド「suria(スリア)」様のショッピングサイトリニューアル(概要)
- 2008年1月 7日
- 投稿者 : 野島
Zen Cart日本語版のデモ商品をリニューアル中です
- 2007年1月22日
- 投稿者 : 八木
Zen Cart (v1.3日本語版)のショップサイトをGoogleAnalyticsのeコマーストランザクションに対応させるには
- 2006年12月 6日
- 投稿者 : 八木
Zen Cart v1.3 日本語版がリリースされました!
- 2006年12月 5日
- 投稿者 : 進地
ラ・テール様のWebサイトリニューアルをお手伝いしました
- 2006年7月12日
- 投稿者 : 安藤
絵画の販売サイト「Belle Arts(ベルアーツ)」の構築をお手伝いしました
- 2006年6月22日
- 投稿者 : 中野
「Web Site Expert」誌に「ECサイト構築/運用術」を寄稿、Zen Cart記事も
- 2005年6月28日
- 投稿者 : 中野
Zen CartでFlashを使って商品画像を魅力的に見せる
- 2005年5月20日
- 投稿者 : 竹村
Zen-Cartの優れた事例が増えてきました
- 2005年5月 3日
- 投稿者 : 中野
Zen Cart日本語版:4ヵ月もかかったZen Cartの日本語化
- 2005年4月 7日
- 投稿者 : 中野
Zen Cart日本語版:アークウェブがZen Cart日本語化に取り組んだきっかけ
- 2005年4月 4日
- 投稿者 : 中野
アークウェブのBlog、始めます。
- 2005年4月 1日
- 投稿者 : 中野
アークウェブの本
Zen Cartによるオンラインショップ構築・運用テクニック―オープンソース徹底活用

内容充実のZen Cart公式本(v1.3対応)がついに発表です。アークウェブのスタッフをはじめZen-Cart.JPの中心メンバーが共著で執筆しました。続きを読む
新着はてブ
カテゴリー
- Shopify(ショピファイ)オンラインショップ構築
- NGO・NPO向け情報
- スマートフォン
- だれもが使えるウェブコンクール
- mixiアプリ
- OpenSocial (システム開発)
- アークウェブのCSR
- A-Form, A-Member, A-Reserve(MTプラグイン)
- Ruby on Rails(システム開発)
- necoったー
- Miqqle
- WebSig24/7
- ecoったー
- ビッグイシュー(The Big Issue)
- CSR(企業の社会的責任)
- マッシュアップ
- RIA (システム開発)
- セキュリティ(システム開発)
- 唐松(アクセス解析)
- Ajax (システム開発)
- テスト(システム開発)
- データベース
- PukiWiki
- Web 2.0
- SEO・サーチエンジン最適化
- XP・アジャイル(システム開発)
- Web・ITニュースクリップ
- Webアクセシビリティ
- Webデザイン
- SEM・サーチエンジン広告
- Webユーザビリティ
- CMS・MovableType
- Zen Cart(オンラインショップ構築)
- Snippy(SNS・ソーシャルブックマーク)
- アークウェブ
- オープンソース
- CMS(コンテンツマネジメント・システム)
- Webマーケティング
- AMP
- SNS