PHPにSameSite = NoneをクロスサイトCookieに使用するように指示する方法は?


8

こちらの記事によるとhttps://php.watch/articles/PHP-Samesite-cookies and PHP documenation at https://www.php.net/manual/en/session.security.ini.php、2つしかありませんPHP 7.3で追加された、この新機能の可能な構成オプション:

  1. session.cookie_samesite = Lax
  2. session.cookie_samesite = Strict

ただし、Chromeコンソールによると、これは「なし」に設定する必要があります。

URLのクロスサイトリソースに関連付けられたCookieがSameSite属性なしで設定されました。彼らがで設定されている場合、Chromeは今だけ、クロスサイトリクエストでクッキーを提供して、ブロックされているSameSite=NoneSecure。デベロッパーツールの[アプリケーション]> [ストレージ]> [Cookie]でCookieを確認し、URLとURLで詳細を確認できます。

このため、クロスサイトCookieを設定できなくなりました。回避策は何ですか?

回答:


10

を使用して、値を「なし」に設定できini_setます。その関数が使用されるときに値がサポートされているかどうかのチェックはありません。

ini_set('session.cookie_samesite', 'None');
session_start();

session_set_cookie_params それを設定することもできます:

session_set_cookie_params(['samesite' => 'None']);
session_start();

php.iniでサポートされるバグレポートはこちらです。


3
ありがとうございました。次のコードを使用してChromeメッセージを削除し、クロスサイトCookieが引き続き機能するようにできました。session_set_cookie_params(['samesite' => 'None'、 'secure' => true]);
デーンIracleous

1
注意してください、samesite = noneは古いブラウザではサポートされておらず、Cookieを完全に拒否します。これを確認し、samesite属性をセッションCookieに設定する場合は必ず古いブラウザを除外してください:chromium.org/updates/same-site/incompatible-clients
Volkan Ulukut

php.iniでのsession.cookie_samesite = Noneの設定は、PHP 7.3.15では機能しませんでした。上記のようにsession_set_cookie_paramsを使用しても機能しました。
フンバッド

1

悪い:

session.cookie_samesite=None

正しい:

session.cookie_samesite="None"

説明はこちら


これを行わないでください。一部のブラウザにはバグがあり、SameSite = Noneを指定するとCookieを完全に拒否します。最初にUserAgentを嗅ぐ必要があります。Googleからの説明です
伝える

0

この方法はuに役立ちます

下にヘッダーの属性を追加しnginxますSecure+SameSite=None

場所/ {

proxy_cookie_path / "/;安全な; SameSite = none";

}

それは私に取り組んでいます!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.