CSRF简单介绍与解决方法

CSRF (Cross-site request forgery) 跨站请求伪造

 

知识点:  目前绝大多数网站采用的还是 session 会话任务的方式。session 机制简单的来说就是服务端使用一个键值对记录登录信息,同时在 cookie 中将 session id(即刚才说的键)存储到 cookie 中。另外我们又知道浏览器中 HTTP(s) 请求是会自动帮我们把 cookie 带上传给服务端的。这样在每次请求的时候通过 cookie 获取 session id,然后通过它在服务端获取登录信息即可完成用户权限的校验。本来这也是个不错的功能。但是由于 cookie 实在是太开放了,如果一个用户在 A 网站登录了,如果用户在 B 网站访问的时候发送了一个 A 网站的请求,那么这个请求其实是带有这个用户在 A 网站的登录信息的。如果这时候 B 站的 A 网站请求是用户不知道的,那就是非常严重的危害了。以上的过程就是跨站请求攻击,即 Cross-Site Request Forgery,即 CSRF。  (以上摘自https://zhuanlan.zhihu.com/p/44877542)

 

定义:指用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

 

可能造成的后果:账号被盗取、账号信息被更改、获取用户个人信息等等。(这里其实有很多,不妨换位思考一下:假如是一个婚恋网站,被盗取的应该是个人信息。假如是汇款网站,被盗取的就是银行账号、金钱。所以不能忽视其造成的后果)

 

举一个简单例子:用户在可以进行转账的网站登录账号后,收到了一封邮件,然而用户出于好奇心或者没有防备心点开了邮件提供的链接 (这个链接往往可以隐藏,做成一个提供优惠券或者可以引起用户感兴趣的页面,但是真正的目的是跳转到向另一个账号转账成功的页面)。这时候如果该网站对提交的数据没有一个安全的验证,疏于防范让其成功提交。那么就可能造成这个用户账号财产丢失、账号信息被更改等等严重后果。

 

 

解决方法:

一. 添加token来进行校验:

    1.在进入确认页面往往session中token添加一个6~8的随机数。

    2.然后在确认界面添加一个token的隐藏输入框,把token的值传递到里面。

    3.最后在提交的代码逻辑中新增一个判断去对比前端的token和session中的token值即可。

 

 

二.检查 Referer 字段

 HTTP 头中有一个 Referer 字段,这个字段用来判断请求来源于哪个地址。通过在网站中校验请求的该字段,我们能知道请求是否是从本站发出的。

 

 

 

后续会补上模拟跨站请求伪造做法和解决代码...

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值