问题标签 [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.
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(如预期的那样)。
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。
是否可以根据请求编写带有条件的出站规则?我没有找到任何表明此作品的文档或网站...
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?
google-chrome - SameSite cookie、框架、子域和重定向
Cookies的SameSite
概念绝对是一个难以掌握的概念……
为了准备Chrome 80的更改,我正在尝试衡量缺少SameSite
属性对我的 cookie 的影响。我有以下配置:
- 用户最初访问main.mysite.com
- main.mysite.com设置SomeCookie (
Set-Cookie: SomeCookie=value; path=/; secure; httponly
) 并重定向到auth.mysite.com - 用户在auth.mysite.com上进行身份验证并被重定向回main.mysite.com(POST 请求)
因为main.mysite.com和auth.mysite.com之间的重定向被认为是同一个站点,并且因为缺少SameSite
属性被SameSite=Lax
Chrome 80 处理,所以这很好。
但是,当main.mysite.com嵌入到托管在另一个站点(例如othersite.com)上的页面的框架中时,SomeCookie不会在步骤 3 中发送回main.mysite.com :
这是正常的吗?为什么?
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。
是否有任何参考资料可以帮助我设置此选项或其他选项?
c# - 在 ASP.NET Core 3.1 Web 应用程序中获取“无法识别的 SameSiteMode 值 -1”InvalidOperationException
我正在运行一些测试,为即将推出的 Chrome 版本做准备,更改 SameSite 对 cookie 的处理,但我的 Web 应用程序遇到了麻烦。我可以通过以下方式重现它:
- 使用 Visual Studio 2019 (16.4.3) 创建一个新项目。
- 选择“ASP.NET Core Web 应用程序”并启用 https。
- 添加“脚手架项目”并添加 ASP.NET Core 标识。
询问时,使用 SQLite 搭建所有文件,并添加新的数据上下文和用户:
添加
services.AddRazorPages();
到启动- 添加
endpoints.MapRazorPages();
到UseEndpoints
配置 lambda
/li>SameSiteCookiesServiceCollectionExtensions
按照ThinkTecture的建议添加并通过添加services.ConfigureNonBreakingSameSiteCookies();
到您的 Startup 来使用它。或者,只需省略浏览器嗅探部分(我认为这个 repro 不需要),跳过复制链接的解决方案,而是这样做:添加
app.UseCookiePolicy();
到启动以启用代码- 启动应用程序(对我来说它在 IIS Express 上启动
https://localhost:44342/
) - 导航
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.100
并3.1.101
- 几个
.NET Core runtimes installed
包括Microsoft.AspNetCore.App
版本3.1.0
和3.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 问题的变体,它提到我的版本太低?但我不知道现在如何进行,因为我觉得我已经清除了所有内容。
我在这里想念什么?我需要做什么来解决这个问题?
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 中使用此行为,或者是否有其他我没有看到的解决方案。任何帮助表示赞赏。
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 中?