![](/img/trans.png)
[英]How can I send some jsp forms without csrf token in spring security
[英]csrf token without jsp (spring mvc)
我在 Spring 安全配置中启用了 csrf 令牌。 但是移动设备如何接收 csrf 令牌? 当我有 jsp 时,它看起来像:
<input type='hidden' name='${_csrf.parameterName}' value='${_csrf.token}'/>
但是现在我没有 jsp... 那么有什么方法可以手动发送 csrf 吗?
一种流行的做法是对过滤器进行编码,以将令牌作为cookie附加。 然后,您的客户端首先发送GET请求以获取该Cookie。 对于后续请求,该Cookie然后作为标头发送回。
您可以查看官方的Spring Angular指南 ,并参考Spring Lemon的源代码以获取详细的实现。
您可以实施无状态CSRF保护。 Robbert van Waveren很好地解释了一种解决方案,即让客户端在Cookie和自定义HTTP标头中生成并发送相同的唯一秘密值 :
考虑到仅允许网站为其自己的域读取/写入Cookie,因此只有真实网站才能在两个标头中发送相同的值。 使用这种方法,您的服务器要做的就是在每个请求无状态的基础上检查两个值是否相等!
您可以通过查看_csrf
属性来获取它。
import javax.servlet.http.HttpServletRequest;
import org.springframework.security.web.csrf.CsrfToken;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/csrf_token")
public class CsrfTokenController {
@GetMapping
public String getToken(HttpServletRequest request) {
CsrfToken token = (CsrfToken) request.getAttribute("_csrf");
return token.getToken();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.