PHP "SameSite=Strict" の使用方法
「RFC 6265」で概説されている最近の変更に対応して、「SameSite=Strict」が導入されました。 Cookie アクセスを制御するための Site" 属性については、PHP 内でこの属性をサポートすることに関心が高まっています。
PHP >= v7.3
PHP バージョン 7.3 および上記では、「同じサイト」属性を設定する機能が、setcookie() 関数の $options 配列を通じて組み込まれています。次の例は、「同じサイト」の値を「なし」に設定する方法を示しています。
<code class="php">setcookie($name, $value, [ 'expires' => time() + 86400, 'path' => '/', 'domain' => 'domain.example', 'secure' => true, 'httponly' => true, 'samesite' => 'None', ]);</code>
PHP < v7.3
7.3 より前のバージョンの PHP では、代替ソリューションを採用できます。
1. Apache 構成:
Apache 構成に次の行を追加すると、すべての Cookie に対して「Same Site」の値を「Lax」に設定できます:
Header always edit Set-Cookie (.*) "; SameSite=Lax"
2. Nginx 構成:
同様のアプローチが Nginx でも利用できます。次の構成を使用して、すべての Cookie に対して「同じサイト」を「厳密」に設定できます:
location / { # your usual config ... # hack, set all cookies to secure, httponly and samesite (strict or lax) proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict"; }
3.ヘッダー メソッド:
Cookie は基本的に HTTP リクエストのヘッダーであるため、header() メソッドを使用して設定できます:
<code class="php">header("Set-Cookie: key=value; path=/; domain=example.org; HttpOnly; SameSite=Lax");</code>
4. setcookie() のバグ悪用:
setcookie() メソッドには、7.3 より前の PHP バージョンで「Same Site」値を「Strict」に設定できる既知のバグがあります:
<code class="php">setcookie('cookie-name', '1', 0, '/; samesite=strict');</code>
注: このバグは PHP 7.3 で修正されました。
以上が7.3 より前のバージョンの PHP で Cookie に \'SameSite\' 属性を設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。