软件编程
位置:首页>> 软件编程>> java编程>> SpringSecurity解决POST方式下CSRF问题

SpringSecurity解决POST方式下CSRF问题

作者:HuCheng1997  发布时间:2023-07-18 18:59:51 

标签:SpringSecurity,POST,CSRF

问题现象:HTTP Status 403-Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'

原因:Spring Security为防止CSRF(Cross-site requetst forgery跨站请求伪造)的发生,限制了除了get以外的大多数方法。

解决方案

①(后端常用):

屏蔽CSRF控制,即Spring Security不再限制CSRF,进行配置:

@Override
protected void configure(HttpSecurity http) throws Exception {
     //屏蔽CSRF控制
     http.csrf().disable()
    ... 
}

解决方案②:

定义headers,post方式提交的时候带上headers的信息:

var headers = {};
headers['X-CSRF-TOKEN'] = "[[${_csrf.token}]]";
$.ajax({
    url: url,
    type: "POST",
    headers: headers,
    dataType: "json",
    success: function(result) {
    }
});

解决方案③:

直接作为参数提交:

$.ajax({
   url: url,
   data: {
       "[[${_csrf.parameterName}]]": "[[${_csrf.token}]]"
       },
   type: "POST",
   dataType: "json",
   success: function(result) {
   }
});

解决方案④:

form表单提交的时候,作为隐藏参数提交

<input type="hidden" th:name="${_csrf.parameterName}"
   th:value="${_csrf.token}">

来源:https://blog.csdn.net/qq_38697437/article/details/105479875

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com