为了账号安全,请及时绑定邮箱和手机立即绑定

锱铢必较:在spring boot中使用spring security的filter防止CSRF攻击

在一个spring boot项目中,需要防止CSRF攻击,按理说应该集成spring security才对。
但是不想使工程变得太复杂,这时可以只把spring security中的相关filter引入来进行。

在pom中添加相关依赖

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-freemarker</artifactId>
		</dependency>
		<!-- Security (used for CSRF protection only) -->
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-web</artifactId>
		</dependency>
	</dependencies>

在app启动时,添加CsrfFilter

@SpringBootApplication
public class Application extends WebMvcConfigurerAdapter {

	@Bean
	public FilterRegistrationBean csrfFilter() {
		FilterRegistrationBean registration = new FilterRegistrationBean();
		registration.setFilter(new CsrfFilter(new HttpSessionCsrfTokenRepository()));
		registration.addUrlPatterns("/*");
		return registration;
	}

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

form中添加CSRF的hidden字段

<input name="${(_csrf.parameterName)!}" value="${(_csrf.token)!}" type="hidden">

ajax中添加CSRF的头

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

demo地址是https://github.com/kabike/spring-boot-csrf

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消