Mar*_*123 5 csrf spring-security spring-boot
我的安全配置有以下行:
...csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())...
Run Code Online (Sandbox Code Playgroud)
每个请求都会发送一个 csrf cookie 给客户端。此 cookie 没有设置同站点属性。是否也可以添加同站点属性?我查看了该类中的一些方法,据我所知,没有任何额外属性。
如何才能做到这一点?
不幸的是,从版本 4.0.1 开始,servlet-api不允许您将该Same-Site属性添加到Cookie. 希望这种情况很快就会改变。
但与此同时,您可以提供自己的CsrfTokenRepository实现,而不是添加 a Cookie(HttpServletResponse从而受到 servlet-api 的 cookie 表示形式的限制),而是直接在 HTTP 标头中设置 cookie:
public class CustomCsrfTokenRepository implements CsrfTokenRepository {
// implement other methods...
@Override
public void saveToken(CsrfToken token, HttpServletRequest request,
HttpServletResponse response) {
// some version of this:
response.setHeader("Set-Cookie", "HttpOnly; SameSite=strict");
}
}
Run Code Online (Sandbox Code Playgroud)
您可以看一下CookieCsrfTokenRepository以填补空白。
| 归档时间: |
|
| 查看次数: |
2663 次 |
| 最近记录: |