gpt4 book ai didi

PHP setcookie "SameSite=Strict"?

转载 作者:IT王子 更新时间:2023-10-28 23:49:46 27 4
gpt4 key购买 nike

我最近阅读了关于“同一站点”属性的“RFC 6265”,我在 2016 年 4 月看了一些文章,其中谈到了 Chrome 51 和 Opera 39 已经实现了“同一站点”属性 ...

我想知道当前的 PHP 是否支持使用此属性创建 cookie?

引用:

最佳答案

1。对于 PHP >= v7.3

可以使用$options数组来设置samesite值,例如:

setcookie($name, $value, [
'expires' => time() + 86400,
'path' => '/',
'domain' => 'domain.example',
'secure' => true,
'httponly' => true,
'samesite' => 'None',
]);

samesite 元素的值应该是 NoneLaxStrict

manual page 中阅读更多内容.

2。对于 PHP < v7.3

您可以根据您的代码库/需求使用以下解决方案/解决方法之一

2.1 使用 Apache 配置设置 SameSite cookie

您可以将以下行添加到您的 Apache 配置中

Header always edit Set-Cookie (.*) "$1; SameSite=Lax"

这将使用 SameSite=Lax 标志更新您所有的 cookie

在这里查看更多信息:https://blog.giantgeek.com/?p=1872

2.2 使用 Nginx 配置设置 SameSite cookie

location / {
# your usual config ...
# hack, set all cookies to secure, httponly and samesite (strict or lax)
proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";
}

同样,这也会使用 SameSite=Lax 标志更新您所有的 cookie

在这里查看更多信息:https://serverfault.com/questions/849888/add-samesite-to-cookies-using-nginx-as-reverse-proxy

2.3 使用header方法设置SameSite cookie

我们知道 cookie 只是 HTTP 请求中的一个 header ,具有以下结构

Set-Cookie: key=value; path=/; domain=example.org; HttpOnly; SameSite=Lax

所以我们可以用header方法设置cookie

header("Set-Cookie: key=value; path=/; domain=example.org; HttpOnly; SameSite=Lax");

事实上,Symfony 并没有在等待 PHP 7.3 并且已经在后台进行了,see here

📝您也可以在 Laravel 中使用相同的方法,因为 Laravel 在底层使用 Symfony 的 Symfony\Component\HttpFoundation\Cookie

2.4 使用 setcookie 方法中的错误设置 SameSite cookie

setcookie('cookie-name', '1', 0, '/; samesite=strict');

小心这个,这是 PHP setcookie 方法中的一个已知错误,并已在 PHP7.3 版本中解决,请参见此处 - https://github.com/php/php-src/commit/5cb825df7251aeb28b297f071c35b227a3949f01

关于PHP setcookie "SameSite=Strict"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39750906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com