Java 应用程序中的 SameSite cookie

2022-08-31 14:08:02

您知道任何允许为cookie设置自定义标志的Java cookie实现吗?似乎javax.servlet.http.Cookie有一组严格限制的标志可以添加。SameSite=strict


答案 1

我不是JEE专家,但我认为,因为cookie属性是一项新发明,你不能指望它出现在Java EE 7接口或实现中。该类似乎缺少泛型属性的 setter。但是,而不是将 Cookie 添加到您的 via 中CookieHttpServletResponse

response.addCookie(myCookie)

您可以通过以下方式简单地设置相应的HTTP标头字段

response.setHeader("Set-Cookie", "key=value; HttpOnly; SameSite=strict")

更新:感谢@mwyrzyk指出,它将覆盖所有同名的现有标头。因此,如果您碰巧在响应中已经有其他标头,当然您会使用相同的参数。setHeader()Set-CookieaddHeader()


答案 2

如果您不想更新所有代码,也可以使用Apache或Nginx配置(或您正在使用的任何其他HTTP服务器/代理)通过一行配置来实现相同的代码

1 使用 Apache 配置设置 SameSite Cookie

您可以将以下行添加到 Apache 配置中

Header always edit Set-Cookie (.*) "$1; SameSite=Lax"

这将使用标志更新您的所有cookieSameSite=Lax

在这里查看更多: https://blog.giantgeek.com/?p=1872

2 使用Nginx配置设置同站点cookie

location / {
    # your usual config ...
    # hack, set all cookies to secure, httponly and samesite (strict or lax)
    proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";
}

同样在这里,这也将更新您的所有cookie与标志SameSite=Lax

在这里查看更多: https://serverfault.com/questions/849888/add-samesite-to-cookies-using-nginx-as-reverse-proxy


推荐