CSRF:跨站请求伪造
攻击原理:冒充网站附带正常网站的Cookies,然后冒充用户向后端发起请求,但是不会去访问前端
CSRF的危害:
利用用户的登录信息,在用户不知情的情况下,完成业务的请求,会造成信息的泄露,财产的损失,还可能做一些不利用户的信息发布
CSRF防御措施:
既然冒充网站不访问正常网站的前端,那么就可以通过在正常网站前端设置一些验证信息,在后端比较这些验证信息才能允许执行
1.验证码:
就是其中的一种方式,但是过多的验证码会影响用户体验,所以不能使用太多
2.token:
后端生成一个随机的Token值,发送给前端,前端表单添加Token值,在提交表单的时候,会附带Token发送给后端,后端检验这个Token是否与生成的相一致,如果一致就通过,不一致就拒绝
如果是ajax请求,那就把Token写在<meta name="csrf_token", content=Token>,发送请求时,获取meta中的带有的Token值,一并发送给后端,由后端验证
3.验证referer
http的请求header 有一个referer的属性,告诉服务器我是从哪个页面链接过来的,就可以拒绝来自第三方的请求
4.SameSite
使用cookie中的SameSite属性,但是现在还并不是所有浏览器都能够支持。