问题标签 [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 回答
2100 浏览

google-chrome - 没有“SameSite”属性的 Cookie 在不同的子域上发送

因此,我已经阅读了Chrome 80 的 cookie 默认为 SameSite=Lax的信息,并且和你们其他人一样,我现在正试图确定这将对我的网站产生的影响。

我正在运行的网站分为几个子域,每个子域都使用自己的 cookie。它看起来像这样:

  • first-site.domain.com使用Cookie1 ( path=/; secure; httponly)
  • second-site.domain.com使用Cookie2 ( path=/; secure; httponly)

由于这些 cookie 没有指定SameSite属性,因此它们应该被视为Lax在 Chrome 80 上,因此应该仅限于同站点请求(除非它是顶级导航)。

然后,根据SameSite cookie 解释

如果用户在your-project.github.io上并从my-project.github.io请求图像, 这就是跨站点请求。

因此,当我启用“SameSite 默认 cookie”和“没有 SameSite 的 Cookie 必须是安全的”标志时,我惊讶地发现当first-site.domain.com将second-site.domain.com嵌入框架时,Cookie2是仍然被发送到second-site.domain.com,这似乎是矛盾的。

肯定是我误会了什么,但此刻,我还是很疑惑。

注意:我已经验证,当我将 second-site.domain.com 嵌入到anotherdomain.com的框架中时浏览器不会发送 cookie(如预期的那样)。

0 投票
1 回答
1625 浏览

iis - 具有基于请求的条件的 IIS 出站重写规则 (web.config)

我目前遇到的问题是,在 Windows Server 上更新 .Net Framework 后,IIS 为我的所有 cookie 提供了sameSite=lax属性( https://support.microsoft.com/en-us/help/4524419/kb4524419

问题类似于SameSite 属性如何自动添加到我的 Asp.net_SessionID cookie 中?

这破坏了大多数在具有另一个域的网页中使用的 IFrame 的功能,因为浏览器不会将 ASP.Net 会话 ID 与后续请求一起发送回服务器。

现在,虽然在上述线程中有一些建议,但它们并不适合我。这是由于 Safari 的非标准行为。MacOSX 和 iOS 12.x 上的 Safari 将相同站点属性的值“无”视为未知,因此将值设置为“严格”,这再次破坏了 Safari 用户的 IFrame 功能。

现在我想知道是否可以在 IIS web.config 中定义出站重写规则,该规则首先检查请求标头以查看客户端是否使用 Safari 浏览器。根据客户端浏览器,版本不同的重写出站规则应更改与浏览器期望相对应的 cookie。

是否可以根据请求编写带有条件的出站规则?我没有找到任何表明此作品的文档或网站...

0 投票
1 回答
2265 浏览

google-chrome - 有没有办法将 SameSite 属性应用于 .AspNetCore.Correlation cookie?

随着Chrome 80最近的变化,现在需要指定SameSite=None需要跨不同站点发送的 cookie。

当托管在不同站点的框架上时,我发现我的 Asp.Net Core 站点存在问题。WS-Federation 身份验证当前被破坏,因为SameSite=None.AspNetCore.Correlation cookie 中缺少该属性:

我找到了一种使用Cookie Policy MiddlewareSameSite=None添加到 cookie 的方法:

这很好用,但这会导致使用此属性创建所有 cookie,我想避免这种情况。是否有一种侵入性较小的解决方案可以仅应用于相关 cookie?

0 投票
2 回答
10573 浏览

google-chrome - SameSite cookie、框架、子域和重定向

Cookies的SameSite概念绝对是一个难以掌握的概念……

为了准备Chrome 80的更改,我正在尝试衡量缺少SameSite属性对我的 cookie 的影响。我有以下配置:

  1. 用户最初访问main.mysite.com
  2. main.mysite.com设置SomeCookie ( Set-Cookie: SomeCookie=value; path=/; secure; httponly) 并重定向到auth.mysite.com
  3. 用户在auth.mysite.com上进行身份验证并被重定向回main.mysite.com(POST 请求)

因为main.mysite.comauth.mysite.com之间的重定向被认为是同一个站点,并且因为缺少SameSite属性被SameSite=LaxChrome 80 处理,所以这很好。

但是,当main.mysite.com嵌入到托管在另一个站点(例如othersite.com)上的页面的框架中时,SomeCookie不会在步骤 3 中发送回main.mysite.com :

显示发生了什么问题的插图

这是正常的吗?为什么?

0 投票
2 回答
7238 浏览

python-3.x - 如何在 python selenium 中设置 Chrome 实验选项 same-site-by-default-cookie

我想这应该有效:

启用为未来的 chrome 版本安排的相同站点 cookie 限制。不是,有错误:

我可以使用 chrome://flags 手动更改选项并查看它是否有效。但是我想自动化它并运行测试脚本来查看它。

这里有java代码:https ://groups.google.com/forum/#!topic/chromedriver-users/cI8hj7eihRo 可以做到,但是我不确定如何将它转移到python。

是否有任何参考资料可以帮助我设置此选项或其他选项?

0 投票
2 回答
1059 浏览

c# - 在 ASP.NET Core 3.1 Web 应用程序中获取“无法识别的 SameSiteMode 值 -1”InvalidOperationException

我正在运行一些测试,为即将推出的 Chrome 版本做准备,更改 SameSite 对 cookie 的处理,但我的 Web 应用程序遇到了麻烦。我可以通过以下方式重现它:

  1. 使用 Visual Studio 2019 (16.4.3) 创建一个新项目。
  2. 选择“ASP.NET Core Web 应用程序”并启用 https。
  3. 添加“脚手架项目”并添加 ASP.NET Core 标识。
  4. 询问时,使用 SQLite 搭建所有文件,并添加新的数据上下文和用户:

    对话框中的步骤 4

  5. 添加services.AddRazorPages();到启动

  6. 添加endpoints.MapRazorPages();UseEndpoints配置 lambda
  7. SameSiteCookiesServiceCollectionExtensions按照ThinkTecture的建议添加并通过添加services.ConfigureNonBreakingSameSiteCookies();到您的 Startup 来使用它。或者,只需省略浏览器嗅探部分(我认为这个 repro 不需要),跳过复制链接的解决方案,而是这样做:

    /li>
  8. 添加app.UseCookiePolicy();到启动以启用代码

  9. 启动应用程序(对我来说它在 IIS Express 上启动https://localhost:44342/
  10. 导航https://localhost:44342/Identity/Account/Login

对我来说结果是:

处理请求时发生未处理的异常。
InvalidOperationException:无法识别的 SameSiteMode 值 -1
Microsoft.AspNetCore.CookiePolicy.ResponseCookiesWrapper.ApplyPolicy(字符串键,CookieOptions 选项)

完整的堆栈跟踪是否很重要:

如果我检查dotnet --info,我会看到:

  • Host Version: 3.1.1
  • 已安装的 .NET Core SDK:一大堆,包括3.1.1003.1.101
  • 几个.NET Core runtimes installed包括Microsoft.AspNetCore.App版本3.1.03.1.1

一些额外的细节和尝试的解决方法:

  • csproj 包含<Project Sdk="Microsoft.NET.Sdk.Web">应该(据我所知)使用最新可用的东西
  • 我已重新启动以确保没有暂时性问题挥之不去
  • 一位使用 Windows 机器的同事,可以重现该问题
  • 另一位同事,用 Linux Mint 机器,没有问题
  • 我试过dotnet nuget locals all --clear了,但没有帮助
  • 我可以在 3.0.0 源中看到错误行,但在 ASP NET Core 的 3.1.0 源(或主控)中看不到
  • 我试图dotnet new globaljson --sdk-version 3.1.101强制使用正确的版本,但它没有用(尽管我不确定这是否是使用一个的正确方法)
  • 我想尝试从我的机​​器上删除特定版本,但我在卸载东西时遇到了问题(除了版本选择功能应该使这种方法变得不必要,对吧?)

所以我我正面临这个 ASP.NET Core GitHub 问题的变体,它提到我的版本太低?但我不知道现在如何进行,因为我觉得我已经清除了所有内容。

我在这里想念什么?我需要做什么来解决这个问题?

0 投票
1 回答
2028 浏览

cookies - 如何在 .NET 4.5.2 Web 应用程序中排除 SameSite 属性

我有一个 .NET 4.5.2 Web 应用程序,我需要在跨站点上下文中传递身份验证 cookie。我通过将它附加到路径来设置 SameSite=None

FormsAuthentication.SetAuthCookie(myUser, false, $"{FormsAuthentication.FormsCookiePath}; SameSite=None; Secure");,

某些浏览器与 SameSite=None ( https://www.chromium.org/updates/same-site/incompatible-clients ) 不兼容,因此我必须排除它以支持这些浏览器:

FormsAuthentication.SetAuthCookie(myUser, false, FormsAuthentication.FormsCookiePath);

在这两种情况下,.NET 都将 SameSite="Lax" 添加到 cookie 中,因此在第一种情况下 Set-Cookie 标头如下所示:

AC7.AUTH=ABC; path=/; SameSite=None; secure; HttpOnly; SameSite=Lax

在第二种情况下:

AC7.AUTH=ABC; path=/; HttpOnly; SameSite=Lax

这似乎是在我们安装 Microsoft 的 KB4530689 安全更新时引入的。我们卸载了该更新,它恢复为不将“SameSite=Lax”附加到所有 cookie。我不确定如何长期缓解此问题,如果 Microsoft 打算在旧版本的 .NET 中使用此行为,或者是否有其他我没有看到的解决方案。任何帮助表示赞赏。

0 投票
1 回答
3016 浏览

google-chrome - 修复不起作用:与跨站点资源关联的 cookie 设置为没有“SameSite”属性

我为我的公司维护一个旧的 ASP 站点。

我们有两个不同的域,A 和 B。域 B 出现在 iFrame 中,我们收到了 SameSite 警告。

该解决方案似乎涉及在标题中添加“SameSite=None; Secure”。

我添加了这些值,它们出现在 Chrome 开发工具中: 在此处输入图像描述

尽管发生了变化:

  • 警告仍然出现。
  • 启用后,SameSite 实验功能仍会阻止主机站点上的 cookie。

有人知道我在这里可能做错了什么吗?

0 投票
1 回答
1790 浏览

asp.net - 使用明确的 samesite=none 发送表单身份验证 Cookie

我已经能够为会话 cookie 进行此转换,但不能为登录 cookie 在此处输入图像描述

我有以下 web.config

如果我更改cookieSameSite="None"cookieSameSite="Lax"或严格。我可以看到发生了变化,但是当设置为 None 时,它​​似乎仍然具有不发出相同站点值的旧行为

我正在使用 .net framework 4.7.2 并安装了允许我使用 samesite=none 进行会话的服务器更新

0 投票
6 回答
6278 浏览

ruby-on-rails - 添加“SameSite=None;” 通过 Rack 中间件到 Rails 的 cookie?

2020 年 2 月 4 日,Google Chrome 将需要SameSite=None;添加到所有跨站点 cookie。 Rails 6.1 和即将发布的 Rails 6.0same_site: :none为 rails cookie 哈希添加了一个选项:

但较旧的 Rails 5.x 应用程序不会获得升级以访问same_site选项哈希。我知道SameSite=None;cookie 选项可以手动添加到控制器中的 Rails 使用:


但是我的 Rails 5.x 应用程序使用复杂的 cookie 对象来修改 cookie。我不想将它们分开,而是想编写 Rack 中间件来SameSite=None;一次手动更新所有带有该属性的 cookie。

这个 StackOverflow 答案显示了一种可以修改 cookie 以更新机架中间件中的 cookie 的方法:

如何重新编写此机架中间件代码以手动附加SameSite=None;到每个现有的 cookie 中?