使用SpringSecurity处理CSRF攻击的方法步骤

网友投稿 279 2023-01-12


使用SpringSecurity处理CSRF攻击的方法步骤

CSRF漏洞现状

CSRF(Cross-site request forgery)跨站请求伪造,也被称为One Click Attack或者Session Riding,通常缩写为CSRF或XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

CSRF是一种依赖web浏览器的、被混淆过的代理人攻击(deputy attack)。

POM依赖

org.springframework.boot

spring-boot-starter-freemarker

org.springframework.security

spring-security-web

配置过滤器

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

/**

*http:// 配置CSRF过滤器

*

* @return {@link org.springframework.boot.web.servlet.FilterRegistrationBean}

*/

@Bean

public FilterRegistrationBean csrfFilter() {

FilterRegistrationBean registration = new FilterRegistrationBean<>();

registration.setFilter(new CsrfFilter(new HttpSessionCsrfTokenRepository()));

registration.addUrlPatterns("/*");

registration.setName("csrfFilter");

return registration;

}

}

在form请求中添加CSRF的隐藏字段

在AJAX请求中添加header头

xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");

jquery的Ajax全局配置

jQuery.ajaxSetup({

"beforeSend": function (request) {

request.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");

}

});


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java与Python之间使用jython工具类实现数据交互
下一篇:微服务网关是干嘛的(微服务网关的主要功能)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~