防止数据冒用的方法

一、样例

我们看一个数据冒用的经典例子:

在一些网站成功登录后,浏览器的cookie会设置serviceToken值,服务器通过该值能获取到用户信息。

如果serviceToken被劫持,他人便可用你的身份进行各种操作。

图片

黄牛软件大多也是利用此原理,不需要获取你的账号密码,只需要获取到serviceToken即可,然后利用这些serviceToken值便可用你的身份做各种操作。

服务端是否有方案能判断传过来的数据确实是本人传的呢?

二、方案

这个问题核心是身份识别的问题:这些数据确实属于你!

2.1前提

我们可以利用公私钥的能力。该方案的实现,需要:

  1. 请求端上需要有公私钥对

  2. 确保私钥安全,私钥不会泄露

2.2流程图

图片

2.3说明

  1. 获取serviceToken时,服务端使用服务端私钥将(设备公钥device.pub和serviceToken)这个组合进行了签名,使得设备公钥和serviceToken关联在一起

  2. 在使用serviceToken的时候,需要传递ts_sign和设备公钥device.pub,服务端使用服务端公钥,能够验证这三个数据是否合法,如果合法,表明当时服务端加签的就是这个设备公钥device.pub和这个serviceToken

  3. 剩下最后一个要解决的问题是,服务端怎么知道这次请求就是私钥持有者发起的?因为请求数据使用设备私钥device.key做了签名req_sign,使用传过来的设备公钥device.pub进行验签,如果通过,就能确认确实是私钥持有者发送的

通过这一系列推导,我们就能实现数据防冒用的效果。

三、总结

实现这个方案需要很多前提条件,系统的复杂度也有所提升,但确实是很精巧的一种设计。你还知道哪些防止数据冒用的方案呢?

最后

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

我的个人博客为:https://shidawuhen.github.io/

往期文章回顾:

  1. 设计模式

  2. 招聘

  3. 思考

  4. 存储

  5. 算法系列

  6. 读书笔记

  7. 小工具

  8. 架构

  9. 网络

  10. Go语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员麻辣烫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值