我最近阅读了关于“Same Site”属性的“RFC 6265”,我看了一些文章,在 2016 年 4 月谈到,Chrome 51 和 Opera 39 已经实现了“same-site”属性……
我想知道当前的 PHP 是否支持使用此属性创建 cookie?
参考:
原文由 Lauro Moraes 发布,翻译遵循 CC BY-SA 4.0 许可协议
我最近阅读了关于“Same Site”属性的“RFC 6265”,我看了一些文章,在 2016 年 4 月谈到,Chrome 51 和 Opera 39 已经实现了“same-site”属性……
我想知道当前的 PHP 是否支持使用此属性创建 cookie?
参考:
原文由 Lauro Moraes 发布,翻译遵循 CC BY-SA 4.0 许可协议
这也可能对仍在苦苦挣扎并使用 PHP >= 7.3.x 和使用 CI 3.1.11 的人有所帮助
在根目录下的 index.php 中,在 <?php 下面添加一行
if(isset($_COOKIE["PHPSESSID"])){
header('Set-Cookie: PHPSESSID='.$_COOKIE["PHPSESSID"].'; SameSite=None');
}
它对我有用,在尝试了所有之后(徒劳)
原文由 Kimondo Ezra 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答4.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答596 阅读✓ 已解决
795 阅读
[ 重要更新: 正如@caw 在下面指出的那样,这个 hack 将在 PHP 7.3 中 中断。现在停止使用它来避免令人不快的惊喜!或者至少将其包装在 PHP 版本检查中,例如
if (PHP_VERSION_ID < 70300) { ... } else { ... }
。]似乎您可以滥用 PHP 的“setcookie”函数的“路径”或“域”参数来潜入 SameSite 属性,因为 PHP 不会转义分号:
然后 PHP 发送以下 HTTP 标头:
几分钟前我刚刚发现了这一点,所以请自己进行测试!我正在使用 PHP 7.1.11。