如前所述,启用CSRF后,Spring
Security将仅保存GET请求。原因是一旦用户认证,CSRF令牌就会更改,以防止恶意用户在用户认证之前(即在公共环境中)发现CSRF。如果我们缓存了请求,那么它将使用旧的CSRF进行重放,并且无论如何都会使CSRF验证失败。
通常,保存POST请求并自动处理它似乎有些危险。考虑公共计算机包含对常用站点的访问的情况。恶意用户对未经身份验证的应用程序执行POST,该应用程序将资金从当前经过身份验证的用户转移到其银行帐户。应用程序将缓存POST,然后显示登录表单。恶意用户走开,受害者看到登录页面已经存在。此外,浏览器中的URL可以通过HTTPS正确显示。受害者登录后,最初请求的POST请求将被重播,并自动将资金从受害者转移到恶意用户。
相反,我们可能应该确保在要重播POST时显示中间页面。



