Hi.Amoㅤㅤ 2021-12-29 09:30 采纳率: 85.7%
浏览 52
已结题

Spring Security的CsrfFilter中csrf-token会不会出现并发问题

问题遇到的现象和发生背景
如题:Spring Security的CsrfFilter中csrf-token

我的解答思路
为了防止csrf攻击,spring security加入了csrffiler过滤器,
1.每次请求的时候都会带有csrf-token并跟tokenRepository中的token比对,比对通过了则替换成新的csrf-token
2.下次请求会带有上次新的csrf-token,像步骤一时一样,比对然后替换成新的

问题出现
当csrf-token=1 时,重复提交了两次,出现并发问题,
那第一次请求完成,比对成功则会替换token,然后更新token,
则第二次校验因为第一次的请求先到达,所以将csrf-token替换了,所以比对的时候一定会比对失败了,所以没有返回csrf-token
那么csrf-token就丢失了

问题是:
是不是会出现这样的并发问题
在git中有人提出
https://github.com/spring-projects/spring-security/issues/5219#ref-commit-352aca3
是不是有这种并发导致token丢失的问题?

  • 写回答

1条回答 默认 最新

  • a1767028198 2021-12-29 14:19
    关注

    看起来有点像,

    img


    假设现在有两个线程都走到这里,如果都没能从tokenRepository获取token,则都会生成token,这样就会有个被覆盖,
    如果有必要的话,可以自己实现个tokenRepository,搭配redis,保证一个sessionid只生成一个token

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月18日
  • 创建了问题 12月29日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?