PHP setcookie“SameSite = Strict”?

新手上路,请多包涵
阅读 1k
2 个回答

[ 重要更新: 正如@caw 在下面指出的那样,这个 hack 将在 PHP 7.3 中 中断。现在停止使用它来避免令人不快的惊喜!或者至少将其包装在 PHP 版本检查中,例如 if (PHP_VERSION_ID < 70300) { ... } else { ... } 。]

似乎您可以滥用 PHP 的“setcookie”函数的“路径”或“域”参数来潜入 SameSite 属性,因为 PHP 不会转义分号:

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

然后 PHP 发送以下 HTTP 标头:

设置 Cookie:samesite-test=1;路径=/;同站点=严格

几分钟前我刚刚发现了这一点,所以请自己进行测试!我正在使用 PHP 7.1.11。

原文由 Steffen 发布,翻译遵循 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题