-
Notifications
You must be signed in to change notification settings - Fork 656
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Chrome80のSameSiteの影響で3Dセキュア等を利用する場合に購入に失敗する #4457
Comments
自前で対応するには、この修正が必要と思われる https://github.com/symfony/symfony/pull/28168/files#diff-d29419a0d7043fce54a98005c26a82aa |
FLY)PHP7.3〜であれば、 symfony/symfony#35520 |
SameSite=None を設定したクッキーと設定していないクッキーを両方書き込む ことで、 |
非対応の UA にマッチする正規表現 |
macOS Mojave 10.14.6, Safari バージョン12.1.2 (14607.3.9)、iOS12.4(simulator), iOS12.0(simulator) で SameSite=None にして検証していますが、 Strict と見なされるような動きはせず、再現しない模様 |
#4519 にて対応していますが、 例) // SameSite=None 非対応ブラウザのパターンを生成する
$patterns = [
'/^.*iPhone; CPU iPhone OS 1[0-2].*$/',
'/^.*iPad; CPU OS 1[0-2].*$/',
'/^.*iPod touch; CPU iPhone OS 1[0-2].*$/',
'/^.*Macintosh; Intel Mac OS X.*Version\/1[0-2].*Safari.*$/',
];
$isUnsupported = array_filter($patterns, function ($pattern) {
return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']);
});
if ($isUnsupported) {
// Safari12など、非対応ブラウザ
ini_set('session.cookie_path', '/');
} else {
if (PHP_VERSION_ID >= 70300) { // PHP7.3以降
ini_set('session.cookie_path', '/');
ini_set('session.cookie_samesite' , 'none');
} else { // PHP7.2以前(session.cookie_samesite は設定しない)
ini_set('session.cookie_path', '/; SameSite=None');
}
} |
概要(Overview)
Chrome80から導入されるSameSiteの影響で、3Dセキュア等を利用した決済でエラーとなる
原因)
外部ドメインからEC-CUEBサイトのドメインにPOSTで遷移したときに、
「EC-CUBEサイトで設定したCookie」がEC-CUBEサイトのサーバーに送信されないため。
例えば、リンク型や3Dセキュアなどで外部のページから、EC-CUBEサイトへ帰ってくる時に
期待するCookieが送信されなくなり、エラーとなる。
実際に、EC-CUBE2~4すべてにおいて以下のような事象が発生する可能性がある。
(EC-CUBEのセッション情報のCookieが送信されないため)
・決済完了画面が表示される、エラーとなる。
・決済完了画面は表示されるが、ログアウトされた状態となる。
・決済完了画面は表示されるが、カートの中身がクリアされない。
etc
期待する内容(Expect) or 要望 (Requirement)
3Dセキュアなどでも正常に購入される
再現手順(Procedure)
Chrome79でも以下の2つの設定を(chrome://flags)でEnableにすることで
確認することができます。
SameSite by default cookies
Cookies without SameSite must be secure
ただし、Cookieが生成されてから2分間は救済措置により影響は発生しません。
(ログインしてから2分以上、十分に時間を空けてから確認する必要があります。)
すでに、ベリトランス様より、事象の確認を報告いただいております。
関連情報 (Ref)
・新しい Cookie 設定 SameSite=None; Secure の準備を始めましょう
https://developers-jp.googleblog.com/2019/11/cookie-samesitenone-secure.html
・SameSite Frequently Asked Questions (FAQ)
https://www.chromium.org/updates/same-site/faq
・Cookies default to SameSite=Lax - Chrome Platform Status
https://www.chromestatus.com/feature/5088147346030592
・SameSite cookies explained - wev.dev
https://web.dev/samesite-cookies-explained/
・SameSite cookie recipes - web.dev
https://web.dev/samesite-cookie-recipes/
・Chrome 80が密かに呼び寄せる地獄 ~ SameSite属性のデフォルト変更を調べてみた
https://qiita.com/ahera/items/0c8276da6b0bed2b580c
・Effect on customer websites and Microsoft services and products in Chrome version 80 or later
https://docs.microsoft.com/en-us/office365/troubleshoot/miscellaneous/chrome-behavior-affects-applications
The text was updated successfully, but these errors were encountered: