问题标签 [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.
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:
和
javascript - Javascript 来利用具有相同站点属性的 cookie?
如果 cookie 设置为 samesite strict,是否可以使用 javascript 将其发送到另一个站点,例如使用 javascript 获取 cookie 并将其发送给另一个用户?
angularjs - samesite 不适用于 Angular JS 中的 ngcookies
我正在为我的 Angular JS 项目使用 ngCookies。我正在尝试将 samesite 选项设置为严格(如下所述),但它不起作用。谁能帮助我如何为 Angular JS cookie 设置相同的站点?
我按照这个 Angular JS 文档进行了尝试,我看到所有其他选项都已设置,但同一站点未在 chrome 中设置为“严格”。 参考
ios - 从 Gmail iOS 应用程序打开链接时,为什么我无法读取 SameSite Lax cookie 的内容?
我公司的网站 (mercury.co) 通过电子邮件向用户发送密码重置链接。我们遇到了一些非常奇怪的行为,我们只能在与 SameSite Lax 属性相关的 Gmail iOS 应用程序中重现:
- 用户通过电子邮件中的链接访问https://mercury.co/reset-password
- 浏览器从该 URL 加载 Javascript 以设置站点
- 客户端执行 GET 请求,该请求在 cookie 中返回 CSRF 令牌。此令牌具有 SameSite Lax 属性集。
- 预期行为:客户端可以读取其中包含 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 中。
html - 如何在 cookie __RequestVerificationToken_Lw__ 上设置属性 samesite 的值
我在 cshtml 页面上有一个防伪造令牌(@Html.AntiForgeryToken()),它会生成一个 cookie RequestVerificationToken_Lw。此 cookie 的属性值为 HTTP 和 Secure。但我也需要设置 SameSite。我如何实现这一目标?
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。
任何帮助将不胜感激
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?
java - Spring:无法将 SameSite cookie 设置为 None
我无法将 SameSite cookie 值设置为无。
以下是我如何生成 ResponseCookie 对象。
对端点的卷曲请求
回复:
如您所见,cookie 中缺少 SameSite 属性。
Spring Boot(版本:2.1.3.RELEASE)依赖
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
cookies - 为同级域隔离同站点 cookie
我注意到,当从subdomain1.example.com向subdomain2.example.com发送 ajax 请求时,即使它们具有 SameSite=lax 或 SameSite=strict 属性,也会包含来自subdomain2的cookie 。这与跨无关域(例如example1.com -> example2.com)的请求不同,后者在 SameSite 属性存在时不包含 cookie。
在这两种情况下,我都使用未设置域属性的 Set-Cookie 标头在服务器端创建 cookie。据我了解,在这种情况下,cookie 与客户端的域相关联。但是,兄弟域似乎被视为一个域。
我的诊断似乎得到了铬项目中的这个测试的证实:
这种行为是故意的还是我的测试中有一些缺陷?是否可以为兄弟域实现 cookie 隔离,或者如果有这样的要求,那么我需要使域不相关?