SpringSecurity框架下实现CSRF跨站攻击防御
一、什么是CSRF 很多朋友在学习Spring Security的时候,会将CORS(跨站资源共享)和CSRF(跨站请求伪造)弄混,以为二者是一回事。其实不是,先解释一下: CORS(跨站资源共享)是局部打破同源策略的限制,使在一定规则下HTTP请求可以突破浏览器限制,实现跨站访问。 CSRF是一种网络攻击方式,也可以说是一种安全漏洞,这种安全漏洞在web开发中广泛存在。 当我们使用Spring Security的时候,这种CSRF漏洞默认的被防御掉了。但是你会发现在跨域请求的情况下,我们的POST、DELETE、PUT等HTTP请求方式失效了。所以在笔者之前的文章中,我们使用 http.csrf.disable() 暂时关闭掉了CSRF的防御功能,但是这样是不安全的,那么怎么样才是正确的做法呢?就是本文需要向大家介绍的内容。 二、CSRF的攻击方式 通常的CSRF攻击方式如下: 你登录了网站A,攻击者向你的网站A账户发送留言、伪造嵌入页面,带有危险操作链接。 当你在登录状态下点击了攻击者的连接,因此该链接对你网站A的账户进行了操作。 这个操作是你在网站A中主动发出的,并且也是针对网站A的HTTP链接请求,同源策略无法限制该请求。 三、如何防御CSRF攻击 为系统中的每一个连接请求加上一个token,这个token是随机的,服务端对该token进行验证