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

问个规范问题

  •  
  •   qwertyzzz ·
    123 · 2019-04-27 22:49:17 +08:00 · 1773 次点击
    这是一个创建于 2037 天前的主题,其中的信息可能已经有所发展或是发生改变。

    没咋写过接口 我想问下如果单纯给 app 写接口 一个安卓端一个 ios 端 那啥 token 的话我是不是可以就定死一个值,告诉他们。然后有需要验证的接口需要传这个值给我是不是就行了啊。。我直接拿约定的 token 值判断?那万一别人抓包了拿到传的 token 咋办。。不太明白这个

    12 条回复    2019-04-28 10:15:56 +08:00
    wunonglin
        1
    wunonglin  
       2019-04-27 23:00:29 +08:00
    对啊,被抓包怎么办?不如不要 token 直接开放吧[doge]。。。emmmm

    最简单的验证流程大概这样

    const token = 你可以在服务器瞎生成一串亲妈都不认识的字符串作为 token

    1、客户端提交账号密码用来获取 token
    2、客户端用自己的方式存在本地
    3、访问 api 的时候在头部带上 auth 之类的 key 加上 token
    4、后台接收到请求后验证一下 token,过了就给数据,不过就给 403
    ashlord
        2
    ashlord  
       2019-04-27 23:03:23 +08:00
    固定 token 不就等于没有 token 吗……那为什么还要麻烦去弄验证?
    qwertyzzz
        3
    qwertyzzz  
    OP
       2019-04-27 23:09:31 +08:00
    @wunonglin 第一步账号和密码是啥呀 0 0.。第三部在头部带上不会被截取吗 还是约定以某种加密方式,我不知道这个 token 需要生成几次 还是只要一个就行了 客户端固定在头部带上这个以大家约定的一个方式来 到时我还解密数据。
    qwertyzzz
        4
    qwertyzzz  
    OP
       2019-04-27 23:09:50 +08:00
    @ashlord 没太搞懂这个流程 没做过呀
    huangzhe8263
        5
    huangzhe8263  
       2019-04-27 23:19:04 +08:00
    之前没了解过,最近也在折腾接口的问题,不知道这个是不是你要的
    [JSON Web Token 入门教程]( http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html)
    wunonglin
        6
    wunonglin  
       2019-04-27 23:21:16 +08:00
    @huangzhe8263

    产品经理:我要随时踢某人下线,且不能影响其他用户!!!
    你:emmmm
    我:[doge]
    wunonglin
        7
    wunonglin  
       2019-04-27 23:22:13 +08:00
    @qwertyzzz md5、shaXXX
    wunonglin
        8
    wunonglin  
       2019-04-27 23:22:49 +08:00
    @qwertyzzz 你不用账户密码你怎么知道是谁对你请求的?上 https
    xylophone21
        9
    xylophone21  
       2019-04-28 08:01:36 +08:00
    你这应该是无用户概念的场景,这种场景下只能尽力而为的做认证,常规的方法从安全到不安全:
    1. 设备出厂时加密预制证书,服务端校验证书(这个应该不适合你)
    2. 设备出厂时加密预制唯一 ID,服务端从数据库查 ID 校验+TLS,换取 token (这个应该也不适合你)
    3. 直接使用设备的唯一 ID,如 UUID 加一个签名校验+TLS+服务端监控异常的 UUID
    4. 在 3 的基础上,不换 token 了,直接使用 UUID+签名校验+TLS+服务端监控异常的 UUID

    另外,顺便问一下大家 3 和 4 的安全性到底差异在哪里?
    虽然 token 能改但 UUID 不能改,但 UUID 换 token 的过程如果被抓,结果是一样的,偶尔使用一次比经常使用安全多少?类似 RefreshToken + AccessToken 的方法,究竟比只有一个 AccessToken (过期等于 RefreshToken )安全在哪里?
    l05jq6W75b29a60l
        10
    l05jq6W75b29a60l  
       2019-04-28 08:48:53 +08:00
    没错的 抓包拿到 token 就可以被任意用户登录。我抓过无数小程序 银行类 token 都可以直接使用 。
    xwbz2018
        11
    xwbz2018  
       2019-04-28 09:18:55 +08:00 via Android
    @wunonglin #6 这功能还真有,分布式 session,sessionid 就是 token,对应的账号信息存数据库或者 redis 里,还要反向存一次方便查找,踢人的时候把 token 一删,用户直接掉线。
    wunonglin
        12
    wunonglin  
       2019-04-28 10:15:56 +08:00
    @xwbz2018 对所以 JWT 一直是残疾,只能应付小场景
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1256 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:06 · PVG 02:06 · LAX 10:06 · JFK 13:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.