原创 Fanjh 有范编程笔记
收录于合集#Spring Security Easy Starter8个
更多内容请关注公众号
前言
不要随便点开一些不知来源的链接,不然你的钱可能会被诱骗转走,这是因为网站存在安全漏洞被攻击者利用。CSRF跨站请求伪造攻击是Web应用安全存在的主要漏洞,是实现登录功能必要考虑的安全问题。
CSRF 跨站请求伪造
CSRF【Cross Site Request Forgery】跨网点请求伪造的场景过程如下
1、用户打开浏览器输入访问目标网站地址www.bank.com;
2、输入账号密码登录成功后正常请求;3、当用户点击跳转进入到第三方攻击网站www.attack.com;4、操作确定按钮或者JS自动提交请求被攻击的上面bank网站接口;5、浏览器窗口请求同目标源接口会自动携带cookie,目标源就会通过请求。
Spring Security 防御攻击
CSRF攻击的原因是受害网站Http请求和来自攻击者网站请求是相同,没法拦截到攻击网站的请求,为了防止恶意网站的请求攻击,需要在请求信息中加入攻击者没法提供的内容信息,让目标源能区分出非法请求。
1、同步token模式
同步token是主要和全面的防止CSRF攻击的方式,Http请求除了自动携带的Cookie外,还需要一个防止CSRF攻击的令牌进行校验,Spring Security的CsrfFilter进行保护。
(1)生成csrfToken, 保存在HttpSession 或者 Cookie ;
(2)POST、DELETE、PUT请求头X-CSRF-TOKEN或者参数_csrf 和服务端存储或者Cookie的CsrfToken进行对比。
2、会话SameSite属性
SameSite是一种新的防止CSRF攻击方法,逐渐成为防止CSRF主流方式,通过在服务端设置set-cookie时指定SameSite属性,以示外部网站的请求不携带cookie,Spring Security的DefualtCookieSerializer默认设置sameSite = "Lax"。
SameSite 多个属性值:
(1)Strict:同一网点http请求携带cookie,否则都不携带cookie;
(2)Lax:同一网点http请求携带cookie,再加上导航跳转的get请求会携带,否则其他都不会携带cookie;
(3)None:关闭SameSite 属性。
如果文章对你有帮助欢迎【关注】公众号