5

我们想为我们的应用程序的会话 Cookie 设置 SameSite=strict。但是我们有一些非常特殊的情况(IMS 深度链接),我们希望允许外部站点 POST 到一个非常特定的 URL 并使用/维护用户的登录状态。我添加了一个令牌参数以在没有 Cookie 的情况下重新建立会话,因此我可以在不需要 SESSION cookie 的情况下处理 POST - 这可能不优雅,但它工作正常。

但是随后这个 POST 处理代码完成了它的工作并重新定向回自身,这导致浏览器发出 GET 请求。在生成的 GET 请求中,浏览器不包含 SESSION cookie。

这看起来很奇怪,因为重定向来自我的服务器(即不是外部服务器)。

所以我的问题是,SameSite 的规范是否期望 POST-ReDirect-GET 序列作为单个操作,即使我的系统接受了 POST 并且重定向来自我的系统,也不会获得任何 cookie?

我通过向 GET url 添加一个令牌来解决这个问题,以对 Cookie 的需要进行第二次临时绕过,然后从那时起一切正常 - 用户仍然从那时起登录。cookie 始终存在——它只是没有在 POST 或重定向的 GET 上发送。

我在这一切中都使用 Chrome。由于我的 FireFox 忽略了我当前版本的 SameSite - cookie 就像在 SameSite 之前一样(一段时间)。

我认为我们的实现将使用 SameSite=strict 和允许绕过技巧的 URL 白名单,这些 URL 需要有一个特殊的令牌才能绕过,并且这些 URL 以其他方式保护自己,而不仅仅是登录 cookie。

但我想确保我的设计基于对 SameSite=strict 和 POST-Redirect 的深入理解。

PS 告诉我重写交互的另一端以便不需要在浏览器中使用 ForeignSite POST 是没有意义的。这是一个我无法控制的规范,我需要与之互操作的大量实现。

4

0 回答 0