【发布时间】:2020-05-29 13:32:23
【问题描述】:
最近浏览器正在通过将samesite cookie默认值增强为Lax来提高安全性以防止CSRF攻击,即如果服务器在通过响应set-cookie头设置cookie时没有设置samesite属性,浏览器会将其视为Lax,并且不存储,因此在随后的调用中,cookie 不会发送回失败的服务器。这发生在跨域通信中,跨域应用程序在主网站的 iFrame 中运行。
我们有一个这样的服务器应用程序,它在成功的身份验证请求的响应中设置两个 cookie,并且这些 cookie 应该在每次后续调用时被发送回服务器,以使服务器相信请求已通过身份验证以进行进一步处理。这些 cookie 没有明确设置任何相同站点属性,因此新浏览器 (Chrome 80) 不会在后续调用中将它们发送回。
服务器应用程序托管在 tomcat 上。所以为了缓解这个问题,我们使用tomcat的cookieprocessor将cookie的samesite属性设置为“none”,这样就可以进行跨域调用。不幸的是,这并没有奏效。尽管通过 cookieprocessor 明确设置了 samesite 属性,但通过开发人员工具检查时的响应不会显示任何相同站点属性的痕迹。
所以这里的问题是:tomcat 应该修改服务器的响应以将 samesite 属性添加到通过响应上的 set-cookie 标头设置的 cookie 中是否正确?我尝试通过设置远程调试来调试 cookieprocessor 代码,但看起来响应没有被拦截,因此 cookie 标头正在被修改。我在这里做错了什么?
注意:我已经在应用程序的 meta-inf/context.xml 中配置了 cookieprocessor。
【问题讨论】:
-
非常感谢。我在stackoverflow.com/questions/57505939/… 上找到了修复版本信息。仍然无法找到它对我的情况不起作用的原因。
标签: google-chrome tomcat cookies samesite