我们的应用程序使用cookie来记住用户登录。我们进行的每个auth API调用,浏览器都会将服务器设置的HTTPonly cookie附加到API请求中,并进行身份验证。莫哈韦沙漠(Mojave)发布后,这种行为似乎在野生动物园中被打破。
我了解了safari实现的跨站点cookie安全性,并且我们的服务器团队在设置cookie时添加了SameSite=None;Secure
。即使在那之后,它仍然不起作用。
Set-Cookie: my_cookie=XXXXX; path=/; secure; HttpOnly; SameSite=None
请提供建议或提供实际找到解决方案的人员的链接。
答案 0 :(得分:2)
MacOS 10.14上的Safari版本和iOS 12上的所有浏览器均受this bug的影响,这意味着SameSite=None
被错误地视为SameSite=Strict
,例如最严格的设置。
我在SameSite cookie recipes上发布了有关以下任一内容的指南:
SameSite=None; Secure
和不支持SameSite=None
的浏览器。<?php include('connection.php');
if(isset($_POST["export"])){
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=loaddata.csv');
$output = fopen("php://output", "w");
fputcsv($output, array(
'row number',
'Position ID',
'Description',
'firstname',
'lastname',
'country ',
'PhoneNumber'));
include ("loaddata.php")
$sqlcsv = "SELECT * FROM employeeTable";
$resultcsv = mysqli_query($conn,$sqlcsv)
or die('Invalid query sqlcsv: ' . mysqli_error());
while ($row = mysqli_fetch_assoc($resultcsv))
{
fputcsv($output, $row);
}
fclose($output);
}
?>
。答案 1 :(得分:2)
这也是 Safari 14 中的一个问题。默认情况下,Safari 不再发送第三方 cookie。这是因为他们引入了隐私首选项:“防止跨站点跟踪”,默认情况下是打开的。因此,如果您使用 SameSite=None; Secure
设置 cookie,它们仍然不会被设置和跨域发送。
答案 2 :(得分:0)
对于用Ruby编码的应用程序(特别是Rails,Sinatra或Rack上的任何东西),RailsSameSiteCookie gem可以很好地解决此问题和相关问题。代码看起来像pseudocode in the Chromium discussion的近似翻译,而没有易碎的正则表达式。