csrf java_SpringSecurity 中的 CSRF实现

1. 基础知识##

csrf就是诱导已登录过的用户在不知情的情况下,使用自己的登录凭据来完成一些不可告人之事。比如利用img标签或者script标签的src属性自动访问一些敏感api,或者是伪造一个form标签,action写的是一些敏感api,通过js自动提交表单等。

1.1 防御手段###

原则上修改功能的API,都要避免使用GET方式。然后就是两种防护手段,一个是校验referer,一个是csrftoken,前者用curl就能破,后者稍微麻烦一点点,也能破。虽然没法完美防御,但是网站这些基础功能还是要有,要不然漏扫都过不去。

2. springboot中的实现##

springboot是用的csrftoken值来实现的,就是每个post请求会生成一个token,这个值不在cookie里面,所以伪造没用,到时服务器端会进行比对,发现不一致就拒绝服务。

弊端就是改造旧系统时要每个form都要改,ajax那种post的提交也需要写额外的函数获取token在放到所有请求里面,所以这个功能要提前规划,后面再改就比较麻烦了。

和cors类似,也是用了一个filter,CsrfFilter来实现的过滤功能,底层结构是HttpSessionCsrfTokenRepository,提供了3个方法。

83708176cf37dcd8502d9b5074d08bf7.png

CsrfFilter.java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值