V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daijinming
V2EX  ›  微信

微信小程序接口安全如何保证

  •  
  •   daijinming · 2019-11-28 09:09:55 +08:00 · 4485 次点击
    这是一个创建于 1856 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不知道大家对微信小程序的后台接口安全保证如何认识,小程序都要求 https,这样就可以保证安全了吗?

    6 条回复    2019-11-28 11:58:41 +08:00
    b821025551b
        1
    b821025551b  
       2019-11-28 09:20:38 +08:00
    必须 https,token 鉴权,如果有问题的话,除了银行那种双向证书认证的 APP 都有问题吧。
    daijinming
        2
    daijinming  
    OP
       2019-11-28 09:27:06 +08:00
    @b821025551b token 鉴权 能不能详细给介绍下,微信用户又不用登陆,一般我只能获得微信 openid,
    tanranran
        3
    tanranran  
       2019-11-28 09:27:11 +08:00
    这世界没有绝对的安全
    b821025551b
        4
    b821025551b  
       2019-11-28 09:31:26 +08:00
    @daijinming #2 你拿到 openid 不就是登录了么。。。,这时候就要自己搞个 token 给前端来维护登录状态,不然你怎么处理,一个 openId 就可以干所有事了?
    ajaxfunction
        5
    ajaxfunction  
       2019-11-28 10:38:52 +08:00
    和 app 没什么两样啊,还是以 token 为主
    第一次登陆下发 toekn,以后每次请求必须带 token,否则视为未登录用户,先让他去登录。
    小程序就是多了个 openid,免去用户输入账号密码而已
    Lonersun
        6
    Lonersun  
       2019-11-28 11:58:41 +08:00   ❤️ 2
    1、前端调用接口(参数:appid,secret ),给后端,后端调微信换取 openid,然后判断 openId 是否已经绑定账户,没有直接将 openId 返回给前端,走注册流程,存在用户则生成 Token 与用户绑定,设置 Token 有效期,并将 Token 返回给前端;
    2、前端在请求其他接口时必须带上 Token,加上当前时间戳,再根据 token 和其他信息按照一定规则生成一个签名 [比如 md5(token+timestamp+xx_key)] , 这些信息可以放 header 里
    3、后端接到请求先判断 token 是否存在、有效,判断签名是否正确,判断时间戳是否超过服务器时间太久(比如 5 分钟),根据 token 找到用户并判断用户状态,如果校验通过才可以访问调用的接口

    增加签名是为了增加模拟请求的难度,就算知道了 token,不知道签名规则,还是请求不成功;
    增加时间戳字段的目的,一是为了验签,二是为了防止一个签名无期限的使用;
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2093 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:22 · PVG 08:22 · LAX 16:22 · JFK 19:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.