问题标签 [samesite]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1762 浏览

firefox - 之前设置的“Samesite: Strict”cookie 在 document.cookie Firefox 和 Safari 中不可用

我们在用户会话开始时为 XSRF/CSRF 设置了 cookie。在某些时候,用户导航到不同的域(例如支付),执行一些操作,并导航到我们的域。返回我们的域后,Firefox 和 Safari 无法读取设置为相同站点的 cookie:严格,Chrome 可以。在 Chrome 和 Firefox(但不是 Safari)的情况下,它确实显示在 cookie 的开发人员工具部分下。

MDN 上的相同站点解释解释说,在未来的请求中,cookie 将在请求标头中一起发送。对于所有三种浏览器,情况都是如此。解释没有定论的是是否应该可以通过document.cookie读取这个cookie。对于 Firefox、Safari 和 Chrome,我们可以读取“Lax”cookie,但对于 Chrome,我们可以读取“Strict”cookie。在页面刷新时也是如此,但在打开新选项卡时(即仅通过导航)则不然。

这是 Safari 和 Firefox 或 Chrome 中的错误 - 还是规范不确定?规格(w3?)是什么?

可以使用带有两个虚拟主机的网络服务器轻松地在本地重新创建它,test.internalsite.com并且test.externalsite.com这些页面带有一些 PHP:

0 投票
2 回答
4920 浏览

javascript - Javascript 来利用具有相同站点属性的 cookie?

如果 cookie 设置为 samesite strict,是否可以使用 javascript 将其发送到另一个站点,例如使用 javascript 获取 cookie 并将其发送给另一个用户?

0 投票
1 回答
3641 浏览

angularjs - samesite 不适用于 Angular JS 中的 ngcookies

我正在为我的 Angular JS 项目使用 ngCookies。我正在尝试将 samesite 选项设置为严格(如下所述),但它不起作用。谁能帮助我如何为 Angular JS cookie 设置相同的站点?

我按照这个 Angular JS 文档进行了尝试,我看到所有其他选项都已设置,但同一站点未在 chrome 中设置为“严格”。 参考

0 投票
2 回答
605 浏览

ios - 从 Gmail iOS 应用程序打开链接时,为什么我无法读取 SameSite Lax cookie 的内容?

我公司的网站 (mercury.co) 通过电子邮件向用户发送密码重置链接。我们遇到了一些非常奇怪的行为,我们只能在与 SameSite Lax 属性相关的 Gmail iOS 应用程序中重现:

  1. 用户通过电子邮件中的链接访问https://mercury.co/reset-password
  2. 浏览器从该 URL 加载 Javascript 以设置站点
  3. 客户端执行 GET 请求,该请求在 cookie 中返回 CSRF 令牌。此令牌具有 SameSite Lax 属性集。
  4. 预期行为:客户端可以读取其中包含 CSRF 令牌的 cookie。实际行为:客户端无法读取cookie。我们通过执行 alert(document.cookie) 确定了这一点,并且当设置了相同站点松懈时看到 CSRF 令牌不存在,但是当未设置相同站点属性时存在。

这会导致下一个 POST 请求失败,因为它无法获取要发送到服务器的 CSRF 令牌。但是,如果您查看在请求中发送的 cookie,它会包含其中包含 CSRF 令牌的 cookie。

我的理解是cookie应该是可读的,因为在这种情况下它不是跨站点的。而且它肯定不应该是不可读的,然后在下一个请求时发送到服务器。

我的理解是 SameSite Lax cookie 不应阻止客户端读取此 cookie。

作为修复,我们已确定我们不需要此特定 cookie 上的 SameSite Lax 属性。但是,我们仍然想了解此问题的根本原因。

到目前为止我们的调查的一些细节:

  • 我们只能在 iOS Gmail 应用中重现该问题。我们无法通过创建自己的 UIWebview 或 WKWebview 来重现该问题(我在 iOS 12.2 的 iOS 模拟器中运行)。我们无法在我们测试的两台 iPad 上重现它(尽管它们可能是不同的 iOS 版本)。我在运行 iOS 12.2 的 iPhone 上进行了测试
  • 基于使用此方法:https ://stackoverflow.com/a/18678703/1176156我们的应用程序在 Gmail 中运行时未嵌入 iframe 或任何内容。我们还不允许通过标头将我们的网站包装在 iframe 中。
0 投票
1 回答
3870 浏览

html - 如何在 cookie __RequestVerificationToken_Lw__ 上设置属性 samesite 的值

我在 cshtml 页面上有一个防伪造令牌(@Html.AntiForgeryToken()),它会生成一个 cookie RequestVerificationToken_Lw。此 cookie 的属性值为 HTTP 和 Secure。但我也需要设置 SameSite。我如何实现这一目标?

0 投票
2 回答
13999 浏览

python - 如何在烧瓶响应中明确设置 samesite=None

由于 7 月份 Chrome 中的更改,我需要修改我的应用程序以明确提供 SameSite=None 键值。这是由于 RFC 以比存在但设置为 None 时更有效的方式处理此设置的缺失。

但是在 set_cookie 方法中,samesite 参数默认为 None,这导致它不会被写入 set-cookie。如何将其强制到响应的 set-cookie 部分?

当我尝试使用以下代码设置 samesite=None

这不会在返回的 set-cookie 中显示任何 SameSite 详细信息

abcid=你好;域=.localhost;到期=格林威治标准时间 2021 年 6 月 29 日星期二 22:34:02;最大年龄=63072000;路径=/

如果我尝试明确设置 Lax 的值(这是每个 rfc 接受的值之一),那么

我取回了明确具有 SameSite=Lax 设置的 set-cookie

abcid=你好;域=.localhost;到期=格林威治标准时间 2021 年 6 月 29 日星期二 23:03:10;最大年龄=63072000;路径=/; SameSite=松懈

我尝试过 None、"None" 和 "",但这些要么使应用程序崩溃,要么在结果响应中省略 SameSite。

任何帮助将不胜感激

0 投票
0 回答
849 浏览

javascript - SameSite=Strict cookie, issued from AWS lambda, is not send for subdomain

I have an AWS Lambda, hosted on domain b.example.com, that sends a 302 redirect response to location a.example.com with a set-cookie header for Domain=example.com.

Browser saves the cookie (not rejected), but does not send the cookie with request header, when it request for b.example.com. It only sends the cookie if I set SameSite=Lax. The question is, does SameSite=Strict not work for subdomains? Is the only way to make it work is to use the Lax mode?

Additional Details

I tried to replicate the same scenario locally (w/o AWS) with 2 trivial express.js apps. One writes the cookie in response and the other reads it.

These are also 2 separate apps hosted on https://a.example.com, and https://b.example.com with self signed certs and all. Both the subdomains points to 127.0.0.1. And with this the same thing works w/o any hiccup.

Is there any reason for this discrepancy?

0 投票
4 回答
19280 浏览

java - Spring:无法将 SameSite cookie 设置为 None

我无法将 SameSite cookie 值设置为无。

以下是我如何生成 ResponseCookie 对象。

对端点的卷曲请求

回复:

如您所见,cookie 中缺少 SameSite 属性。

Spring Boot(版本:2.1.3.RELEASE)依赖

0 投票
2 回答
38640 浏览

tomcat - 如何在 Tomcat 的 Cookie 处理器中设置 SameSite Cookie?

Tomcat 的 context.xml 定义了 CookieProcessor(默认 LegacyCookieProcessor)

https://tomcat.apache.org/tomcat-9.0-doc/config/cookie-processor.html

我正在尝试添加 cookie 处理器上显示的属性,但这似乎不起作用

我没有看到设置了 sameSite 属性的 Tomcat 响应标头 cookie

0 投票
1 回答
996 浏览

cookies - 为同级域隔离同站点 cookie

我注意到,当从subdomain1.example.comsubdomain2.example.com发送 ajax 请求时,即使它们具有 SameSite=lax 或 SameSite=strict 属性,也会包含来自subdomain2的cookie 。这与跨无关域(例如example1.com -> example2.com)的请求不同,后者在 SameSite 属性存在时不包含 cookie。

在这两种情况下,我都使用未设置域属性的 Set-Cookie 标头在服务器端创建 cookie。据我了解,在这种情况下,cookie 与客户端的域相关联。但是,兄弟域似乎被视为一个域。

我的诊断似乎得到了铬项目中的这个测试的证实:

https://github.com/chromium/chromium/blob/master/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc

这种行为是故意的还是我的测试中有一些缺陷?是否可以为兄弟域实现 cookie 隔离,或者如果有这样的要求,那么我需要使域不相关?