14.跨站请求伪造和跨站请求保护的实现

1.什么是跨站请求伪造 

  • CSRF全拼为 Cross Site Request Forgery,译为跨站请求伪造。
  • CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。
    • 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......
  • 造成的问题:个人隐私泄露以及财产安全。

2.CSRF攻击原理

 

图中 Browse 是浏览器,WebServerA 是受信任网站/被攻击网站 A,WebServerB 是恶意网站/点
击网站 B。

  1. 一开始用户打开浏览器,访问受信任网站A,输入用户名和密码登陆请求网站A。
  2. 网站A验证用户信息,用户信息通过验证后,网站A产生Cookie信息并返回给浏览器。
  3. 用户登录网站A成功后,可以正常请求网站A。
  4. 用户未退出网站A之前,在同一浏览器中,打开一个tab访问网站B。
  5. 网站B看到有人访问后,他会返回一些攻击性代码。
  6. 浏览器在接受这些攻击性代码后,促使用户在知情的情况下,浏览器携带Cookie(包括sessionsId)信息,请求网站A。这种请求有可能更新密码,添加用户什么的操作。

从以上的CSRF攻击原理可以看出,要完成一次CSRF攻击,需要被攻击者完成两个步骤:

1.登录受信任的网站A,并在浏览器本地生成cookie

2.在不登出网站A的情况下,访问危险网站B

如果不满足以上两个条件中的一个,就不会受到 CSRF 的攻击,以下情况可能会导致 CSRF:

1.登录了一个网站后,打开一个 tab 页面并访问另外的网站。

2.关闭浏览器了后,本地的 Cookie 尚未过期,你上次的会话还没有已经结束。(事实上,关闭浏览器不能结束一个会话,但大多数人都会错误的认为关闭浏览器就等于退出登录/结束会话了……)

3.如何防止CSRF攻击

解决办法:就是在表单中添加 from.csrf_token。

步骤

  1. 在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值
  2. 在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token
  3. 在用户点击提交的时候,会带上这两个值向后台发起请求
  4. 后端接受到请求,以会以下几件事件:
    • 从 cookie中取出 csrf_token
    • 从 表单数据中取出来隐藏的 csrf_token 的值
    • 进行对比
  5. 如果比较之后两值一样,那么代表是正常的请求,如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值