同源策略为什么可以防csrf_Spring Security 如何预防CSRF跨域攻击?

序言

前面我们学习了 spring security 与 springmvc 的整合入门教程。

spring secutity整合springboot入门

spring security 使用 maven 导入汇总

spring security 业界标准加密策略源码详解

这一节我们来学习一下 spring security 是如何预防 CSRF 攻击的。

拓展阅读

web 安全系列-04-CSRF 跨站请求伪造

什么是CSRF攻击?

了解CSRF攻击的最佳方法是看一个具体示例。

f832c538520dd2a6bd159103addaff6a.png

例子

假设您银行的网站提供了一种表格,该表格允许将资金从当前登录的用户转移到另一个银行帐户。

例如,转账表单可能如下所示:

http 的响请求可能如下:

POST /transfer HTTP/1.1Host: bank.example.comCookie: JSESSIONID=randomidContent-Type: application/x-www-form-urlencodedamount=100.00&routingNumber=1234&account=9876

现在,假装您对银行的网站进行身份验证,然后无需注销即可访问一个邪恶的网站。

恶意网站包含具有以下格式的HTML页面:

您想赢钱,因此单击“提交”按钮。

在此过程中,您无意中将 $100 转让给了恶意用户。

发生这种情况的原因是,尽管恶意网站无法看到您的cookie,但与您的银行关联的cookie仍与请求一起发送。

最糟糕的是,使用JavaScript可以使整个过程自动化。 这意味着您甚至不需要单击该按钮。

此外,在访问受XSS攻击的诚实站点时,也很容易发生这种情况。

那么,我们如何保护用户免受此类攻击呢?

web 安全系列-02-XSS 跨站脚本攻击

防范CSRF攻击

发生CSRF攻击的原因是受害者网站的HTTP请求与攻击者网站的请求完全相同。

这意味着无法拒绝来自邪恶网站的请求,也不允许来自银行网站的请求。

为了防御CSRF攻击,我们需要确保恶意站点无法提供请求中的某些内容,以便我们区分这两个请求

Spring提供了两种机制来防御CSRF攻击:

  • 同步器令牌模式
  • 在会话Cookie上指定SameSi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值