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

google-chrome - 如何避免“Lax+POST”临时干预的 SameSite 2 分钟窗口?

是否有 chrome 标志来避免“Lax+POST”临时干预的 2 分钟窗口?通过这种方式,我们可以在将来删除此行为时测试对我们网站的影响。

来自https://www.chromium.org/updates/same-site的参考 请 注意,“Lax+POST”的 2 分钟窗口是一种临时干预,将在未来的某个时间点移除(在马厩之后的某个时间) Chrome 80 的发布),此时涉及这些流程的 cookie 将需要SameSite=NoneSecure即使不到 2 分钟。

0 投票
8 回答
52620 浏览

asp.net - SameSite 属性如何自动添加到我的 Asp.net_SessionID cookie 中?

最近 samesite=lax 自动添加到我的会话 cookie 中!这个属性只是添加到 sessionID: "Set-Cookie ASP.NET_SessionId=zana3mklplqwewhwvika2125; path=/; HttpOnly; **SameSite=Lax**"

我的网站托管在 IIS 8.5、Windows 2012 R2 上,没有 WAF 或 UrlRewrite,我关闭了 AntiVirus (kasper)。

但在某些客户服务器上也有同样的问题。

任何想法?

编辑: 我发现这个: https: //support.microsoft.com/en-us/help/4524419/kb4524419

现在,当 HttpCookie.SameSite 值为“无”时,ASP.NET 将发出 SameSite cookie 标头,以适应 Chrome 中即将对 SameSite cookie 处理进行的更改。作为此更改的一部分,FormsAuth 和 SessionState cookie 也将使用 SameSite = 'Lax' 而不是之前的默认值 'None' 发出,尽管这些值可以在 web.config 中覆盖。

如何在 web.config 中覆盖 SessionState 的相同站点 cookie?我添加了这一行,但它不适用于 SessionID cookie! <httpCookies sameSite="Unspecified" />

编辑:我发现这个:https ://docs.microsoft.com/en-us/dotnet/api/system.web.configuration.sessionstatesection.cookiesamesite?view=netframework-4.8#System_Web_Configuration_SessionStateSection_CookieSameSite

通过 SessionState 标签的“cookieSameSite”属性为状态服务器设置相同站点。

0 投票
3 回答
1824 浏览

internet-explorer - IE 或 Edge Print 对话框在没有会话的情况下向服务器发送请求(因为 SameSite=Lax on session cookie)

我有一个asp.net网站,用户可以登录,会员可以通过Ctrl+P获取报告或打印页面。

最近,当我的会员在 IE 中打开我的网站并尝试打印时,他们已登出!

为什么?因为 IE 打印对话框在没有会话 cookie 的情况下向服务器发送了一些请求,所以 StateServer 为该客户端释放新会话,然后用户注销。

为什么打印对话框发送请求?我不知道,但我猜 IE 打印对话框尝试渲染页面并准备好打印。

为什么打印对话框不发送当前会话 cookie?因为 .net 的新更新为会话 cookie 设置了 SameSite=lax,所以来自打印对话框的请求无法发送当前会话 cookie。 https://support.microsoft.com/en-us/help/4524419/kb4524419

如何防止 IE 打印对话框发送请求?或者我如何强制 IE 打印对话框发送相同的会话 cookie?

任何想法?

编辑: 我创建了一个示例项目来显示这个问题。您可以下载我的项目并在 IIS 上托管,然后打开 Default.Aspx 并尝试在 IE(或边缘)中打印该页面。你会看到我的问题。 https://easyupload.io/w6vvpy

0 投票
2 回答
1109 浏览

session-cookies - SameSite=Strict cookie 保护在 Chrome 和 Firefox 中是否被破坏?

似乎 CSRF 保护属性“SameSite=Strict”并未在所有情况下都提供所需的保护。

场景1(作品):

  • 用户登录https://example.com。会话 cookie 已设置,受“SameSite=Strict”保护。
  • 用户访问https://attack-1abc2def.com。跨域表单 POSThttps://example.com/foo不会发送会话 cookie,很好,保护工作。

方案 2(已损坏):

  • https://example.com如上所述登录。设置了会话 cookie:
    Set-cookie: PHPSESSID=1234; path=/; domain=.example.com; secure; HttpOnly; SameSite=Strict
  • 用户访问https://attack-1abc2def.com。该网站制作了一个跨域表单 POST 到https://example.com/login. 会话 cookie 不会一起发送,因为使用SameSite=Strict.
    但是:/login路由设置了一个新的会话 cookie
    Set-cookie: PHPSESSID=9876; path=/; domain=.example.com; secure; HttpOnly; SameSite=Strict 。(一些框架,比如 Symfony,为每个登录请求设置一个新的会话 cookie,无论是否成功。)
    这个 cookie 被存储,因此替换了有效的会话 cookie - 尽管有SameSite标志。
    -> 即使之前的会话仍然有效,浏览器不再使用它,因此用户实际上已注销。

我在 Chrome/78.0.3904.108 和 Firefox/70.0 中对此进行了测试。CSRF 保护适用于场景 1,因为我添加了“SameSite=Strict”标志,但在场景 2 中有描述的问题。

“SameSite”cookie 规范(或浏览器开发人员)是否可能错过了场景 2?
我希望“SameSite”标志不再需要特殊的 CSRF 保护措施。

恕我直言,“SameSite”标志不仅应该防止发送现有的 cookie,还应该防止存储新的 cookie。

0 投票
1 回答
232 浏览

regex - 多个cookie的Apache mod_headers正则表达式?

我正在使用以下代码编辑设置特定 cookie 的 SameSite 属性:

这行得通,但是有没有办法将这两个规则组合成一条线?我知道如何将其设置为所有 cookie 或排除特定 cookie,但有没有办法在单行正则表达式中指定 2 个或更多 cookie?谢谢

0 投票
2 回答
2716 浏览

cakephp - cakePHP 为 SameSite 属性设置 Cookie。但我在代码中找不到它/追踪它

我仍在成为一名开发人员。首先,我无法显示与此问题相关的任何代码,因为我不允许这样做......

使用 Chrome(和其他)的新 cookie 策略,该SameSite属性必须设置为 None。

我的问题是,我找不到设置 cookie 的任何代码。它来自服务器。我搜索了我目前所在公司的 git 存储库。我在互联网上搜索了所有可能的解决方案。问题在于找到合适的位置。代码是用 php 编写的,到目前为止我还没有学过。

上述 cookie 来自另一个网站,我无法找到它。

0 投票
0 回答
177 浏览

javascript - 来自不同来源的 Cookie

给定以下突变解析器:

当代码是这样的时,我收到以下警告:

与http://timetable-yoga-pd.herokuapp.com/上的跨站点资源关联的 cookie设置为没有该SameSite属性。SameSite=None它已被阻止,因为 Chrome 现在仅在使用和设置时才提供带有跨站点请求的 cookie Secure。您可以在应用程序>存储>Cookies 下的开发人员工具中查看 cookie,并在https://www.chromestatus.com/feature/5088147346030592https://www.chromestatus.com/feature/5633521622188032中查看更多详细信息。

背景故事:前端部分是一个 React 应用程序,托管在 timetable-react-pd.herokuapp.com 上。后端部分是一个节点应用程序,托管在 timetable-yoga-pd.herokuapp.com 上。

现在,当我按照警告中的要求将安全设置为 true 时,未设置 cookie 标头。我在网上查到,这是正常的。

当我将 sameSite 设置为 false 时,它​​就像不存在一样(预期行为)。如果将 sameSite 设置为“none”或“None”,警告会消失,但会出现一个新错误,表示 GraphQL 不接受值“none”。

0 投票
0 回答
322 浏览

google-chrome - Chrome SameSite Cookie

如果您使用 SameSite cookie 属性并将其设置为严格并且服务器返回一个 http 错误代码,如 404 或 500,则会在 chrome 中显示错误消息。到目前为止,一切都很好。但是,如果在显示 404 错误消息时用户刷新页面(F5 或重新加载按钮),则 cookie 不会随 GET 请求一起发送。
这是正常行为吗?用 FF 71 对其进行了测试,并发送了严格的 cookie。

0 投票
0 回答
64 浏览

http - 如何找到我的 cookie 的资源和来源?

有一个由 TS0157d632 命名的 cookie,我想为其分配 SameSite 属性。但是我没有发现那个cookie是从哪里来的?我认为,SSL 证书会影响它,因为相同的代码发布了另一个未在同一域上获得证书的站点,并且 cookie 没有出现。

Cookie 名称 TS0157d632 和网站是https://www.sekerleasing.com.tr/

0 投票
1 回答
1209 浏览

identityserver4 - 在 SameSite=Lax 的情况下使用 oidc-client 进行静默续订

Chrome 计划在 2020 年 2 月使用 Chrome 80 为 cookie 实施新的默认安全模型。现在我正在测试我们所有可能受到影响的应用程序。

对于身份验证/授权,我们在后端使用 oidc-client(在 UI 上)和 IndentityServer。

工作流程如下:

要求

POST http://my_identity_server/api/authenticate {用户名,密码}

回应

设置 Cookie:idsrv=abc

{"redirectUrl":" http://my_identity_server/connect/authorize/callback?client_id=MyApplication&response_type=id_token token&scope=openid"}

要求

http://my_identity_server/connect/authorize/callback?client_id=MyApplication&response_type=id_token token&scope=openid" Cookie:idsrv=abc

回应

302 位置:http://myApplication/#id_token=123&access_token=456&token_type=Bearer

要求

http://myApplication/#id_token=123&access_token=456&token_type=Bearer

当应用程序加载时,Oidc-client 添加 IFrame 来做静默更新,实际上发送额外的请求

GET http://my_identity_server/connect/authorize?client_id=MyApplication&response_type=id_token token&prompt=none Cookie:idsrv=abc

我不明白为什么最后一个请求在 IFrame 中包含 idsrv cookie?请求是在 IFrame 内完成的,它绝对是第三方 cookie。如果我将 SameSite 设置切换为“严格”,一切都按预期工作,则不会发送 cookie。

如果有人可以向我解释这个案例或提出一些想法来检查,那就太好了!谢谢你!