質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

Q&A

解決済

1回答

1589閲覧

Samesite=None, Secureへの対応について

nkm13

総合スコア2

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

0グッド

1クリップ

投稿2020/07/08 06:01

前提・実現したいこと

決済サービスを用いたECサイトにてSamesite=None, Secureの対応をしましたが、
現在でも一部の環境でセッション消失の問題が発生しているとの報告があります。

調べてみたところ、以下の記事でiOSの一部の環境にてバグがあるとの記載と回避方法を発見し反映してみましたが、
https://mam-mam.net/mytech/show.php?cd=350
現在でも一部のChromeやAndroidで報告が続いており、結局最終的にどのようにすれば良いのか分からないでおります。

そのため、この対策の最終形はどのような形で収まるのかをお教えいただければ幸いです。

現在の対策

php

1$ua=$_SERVER['HTTP_USER_AGENT']; 2if(!preg_match( 3 //iPhone,iPodの場合 4 '/(CPU\siPhone\sOS\s1[0-2]|'. 5 //iPadの場合 6 'iPad;\sCPU\sOS\s1[0-2]|'. 7 //MacでSafari12以下の場合 8 'Macintosh;\sIntel\sMac\sOS\sX.*Version/1[0-2].*Safari|'. 9 //Mac10.14でSafari13以下の場合 10 'Macintosh;.*Mac\sOS\sX\s10_14.*\sAppleWebKit.*Version/1[0-3].*Safari'. 11 ')/i',$ua) 12) 13{ 14 if (PHP_VERSION_ID < 70300) { 15 $_cp = session_get_cookie_params(); 16 session_set_cookie_params($_cp['lifetime'], $_cp['path'] . '; SameSite=None', $_cp['domain'], true, true); 17 } 18 else { 19 $cookieParams = session_get_cookie_params(); 20 $cookieParams["samesite"] = "None"; 21 $cookieParams["secure"] = true; 22 } 23 session_set_cookie_params($cookieParams); 24} 25else { 26 //何もしない 27}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Cookieのsamesite=none に対応していないブラウザはIEのみであり、かつIEでsamesite=noneを指定しても差し支えない(単に無視されるだけ)なので、ブラウザ判定を外して、常にsamesite=none; secureを指定するようにすればよいと思います。


(以下追記)

古いiOSやAndroidも頑張って対応するというポリシーの場合はかなりやっかいで、バグを生みやすいのでお勧めはしませんが、どうしてもやりたい場合は、以下のサイトが詳しいようです。かなり複雑なので、見るからに「やりたくない!」という感じですが、必要であればどうぞ。

SameSite=None: Known Incompatible Clients - The Chromium Projects

投稿2020/07/08 08:00

編集2020/07/08 12:50
ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nkm13

2020/07/08 10:16

回答ありがとうございます。 ブラウザ判定は不要とのことですが、様々なトピックスにおいて特定のブラウザはバグがあるためスルーするようにとの情報が散見できます。 例) https://jets94.com/1468228/ https://bugs.webkit.org/show_bug.cgi?id=198181#c24 無視できない情報だと思うのですが、本当にブラウザ判定を外してしまっても良いのでしょうか?
nkm13

2020/07/09 08:43

Known Incompatible Clients、まさに求めていた情報です。 確かにかなり厄介そうですが極力対応する必要があるためこちらを参考に対応したいと思います。 (異常を検知した際の例外処理は稼働しているので個人的には十分だと考えているのですが…) 助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問