问题一:什么是csrf?
英文全称Cross Site Request Forgery(跨站请求伪造);
通俗来讲就是攻击者盗用你的身份,冒用你的名义发出恶意请求,包括发送邮件,电话信息,甚至于转账或者是购买虚拟货币;
csrf攻击的示意图()
CSRF攻击的原理:
1,用户向服务器端发送请求登录信息,服务器端会在用户的浏览器上设置A站点的cookie值;
2,用户在未清除cookie的情况下,在B站点中点击向隐藏的向A站点发送请求的标签,在用户不知情的情况下向A站点发送请求;
3;若A站点在未进行csrftoken验证的情况下,B站点伪造过来的请求就会通过服务器的验证,从而进行下一步的操作。
防止CSRF攻击的方法:
1,前端页面发送请求数据的时候,后端会想cookies上设置一串随机字符串(csrf_token值);
2,在form表单中将设置一个隐藏的字段,值与在cookies中设置的相同(csrf_token值);
3,在用户点击提交的时候,客户端会同时将两个值发送到后端程序;
4,后端接收到客户端的请求之后,会做出一下几个动作
1,从cookies中将csrf_token值取出来;
2,将forn表单中的csrf_token值出来;
3,将两个随机字符串做对比;
5,相同就就表明是用户自己发送过来的请求,不相同就表示是伪造的的用户请求。
代码实例