• 防止数据冒用的方法


    一、样例

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

    在一些网站成功登录后,浏览器的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语言

  • 相关阅读:
    在嵌入式设计中添加双向I2C数字隔离
    vue3.0 如何自定义指令
    线上 hive on spark 作业执行超时问题排查案例分享
    Editors(Vim)
    学习Node js:raw-body模块源码解析
    DBS note4:Buffer Management
    2022-09-12 Yacc: Yet Another Compiler-Compiler
    Llama 3加入大模型“豪华套餐”,成了吴恩达最好的生日礼物
    MyBatis练习3
    适合学生党的蓝牙耳机有哪些?学生党蓝牙耳机推荐
  • 原文地址:https://blog.csdn.net/shida219/article/details/126202561