web-dev-qa-db-ja.com

「SameSite cookieをnoneに設定する」警告を修正する方法Chrome Extension

chrome拡張機能を作成し、popup.jsからCookieを読み取るPHPスクリプト(Xhttprequestを使用))を呼び出しました。このように:

$cookie_name = "mycookie";

if(isset($_COOKIE[$cookie_name]))
{
    echo $_COOKIE[$cookie_name];
}
else{
    echo "nocookie";
}

しかし、私は拡張機能のエラーでこの警告を受けています。

(Here is my domain)のクロスサイトリソースに関連付けられたCookieが、SameSite属性なしで設定されました。 Chromeの将来のリリースでは、SameSite=NoneおよびSecureが設定されている場合にのみ、クロスサイトリクエストでCookieを配信します。Cookieは、アプリケーションの下の開発者ツールで確認できます> Storage> Cookies https://www.chromestatus.com/feature/5088147346030592 および https://www.chromestatus.com/feature/5633521622188032 で詳細を確認してください。

このようなCookieを作成しようとしましたが、役に立ちませんでした。

setcookie($cookie_name,$cookie_value, time() + 3600*24, "/;samesite=None ","mydomain.com", 1);

this 質問の指示に従います。

40
Danilo Ivanovic

私もそのため「試行錯誤中」ですが、Googleからのこの回答Chrome LabsのGithubが少し役に立ちました。メインファイルに定義すると、うまくいきました。サードパーティドメイン1つのみ。テストはまだ行っていますが、この回答をより良い解決策に更新したいと思っています。

あなたがPHPを7.2まで持っているなら、私のサーバーがするように:

header('Set-Cookie: cross-site-cookie=name; SameSite=None; Secure');

または、ホストがすでに7.3に更新されている場合は、以下を使用できます。

setcookie('cross-site-cookie', 'name', ['samesite' => 'None', 'secure' => true]);

Cookieを確認するもう1つの方法は、以下のフラグを有効にすることです。これにより、「この変更の影響を受ける可能性のあるすべてのCookieごとにコンソール警告メッセージが追加されます」。

chrome://flags/#cookie-deprecation-messages

https://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md にあるコード全体を参照してください。これらにはsame-site-cookiesも。

22
Dimas Pante

新機能が登場すると、SameSite=None CookieもSecureとしてマークする必要があります。そうしないと拒否されます。

chromium updates とこの blog post の変更に関する詳細情報を見つけることができます。

:質問とは直接関連していませんが、私のウェブサイトの開発中に最初は私の懸念であったため、ここに上陸した他の人には役立つかもしれません:

いくつかのサードパーティサイト(私の場合はgoogle.comでした)をリストする質問からの警告が表示されている場合-つまり、それらがそれを修正し、それはあなたのサイトとは何の関係もありません。もちろん、警告があなたのサイトに言及していない限り、Secureを追加することで修正できます。

23
vir us
>= PHP 7.3

setcookie('key', 'value', ['SameSite' => 'None', 'Secure' => true]);

< PHP 7.3

exploit the path
setcookie('key', 'value', time()+(7*24*3600), "/; SameSite=None; Secure");

Emitting javascript

echo "<script>document.cookie('key=value; SameSite=None; Secure');</script>";
1
Robert Greene

私は結局、Ubuntu 18.04/Apache 2.4.29/PHP 7.2 install Chrome 80 for mod_headersをインストールして、

a2enmod headers

Apache VirtualHost構成に次のディレクティブを追加します。

Header edit Set-Cookie ^(.*)$ "$1; Secure; SameSite=None"

そして、Apacheを再起動します。

service Apache2 restart

ドキュメントを確認したところ( http://www.balkangreenfoundation.org/manual/en/mod/mod_headers.html )「always」条件には、同じ条件では機能しない特定の状況があることに気付きました応答ヘッダーのプール。したがって、「常に」を使用しないことは私にとってPHPで機能しましたが、すべてのベースをカバーしたい場合は、「常に」を使用する場合と使用しない場合の両方でディレクティブを追加できます。テストされていません。

0
Ethan Burnside