飞行的猪哼哼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1:模拟正常情况用户的登录:
在这里插入图片描述
分析:当用户点击登录按钮的时候,会将自己的用户名和密码等信息发送给服务器,服务器判断,是不是post请求,如果是提取request中的username,password.然后服务器查询数据库是否存在这个用户名和密码。如果查询成功,会给在response中设置cookie,返回给浏览器。此时浏览器就存在了本次网页访问的cookie。
2:接下来用户进行转账操作:
在这里插入图片描述
此时用户点击转账,这次请求携带者上次服务器返回的cookie值,浏览器拿到这次的请求后,首先使用COOKIES的get方法,获取上次请求的cookie的键,如果匹配成功,表示用户已经登陆了,无需再次登录。然后就进行转账的操作。

3:存在的问题:
在这里插入图片描述
此时用户又打开了骗子网站的首页,但是这个骗子网站,把自己账户和转账的金额按钮给隐藏了,并且一旦点击领取优惠卷,直接转发用户的请求到真正网站的转账页面,由于转发cookie任然存在,所以网站服务器仍然会验证通过,这样骗子就把自己钱成功转账到自己账户了。

4:如何避免这样的操作??
在这里插入图片描述
这里就需要csrf防护:过程是这样的,当用户还没有进入骗子网站,之前的网页,我们服务器都增加了一个csrf_token ,这个会生成一个随机值,这个随机值会随着模板(页面中的表单)一起返回给浏览器,同时这个随机值也会随着cookie一起返回给浏览器。当访问骗子网站的时候,骗子网页中是没有,正常网页表单中的csrf_token值的,所以当服务器检验cookie值和表单中的csrf_token值是否相同时,发现骗子网站表单中的csfr_token和正常网页的tocken值是不相同的,这样这个访问就会被屏蔽掉。
在这里插入图片描述
但是我有一个问题:如果骗子网站获取到正常网页的cookie,再把里面的csfr_token,增加进入自己的网页表单中,那么服务器不就判断不出来了吗?

posted on 2020-08-29 21:28  飞行的猪哼哼  阅读(38)  评论(0)    收藏  举报