V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
SingeeKing
10.19D
V2EX  ›  问与答

可否利用 UUID 代替权限验证

  •  
  •   SingeeKing ·
    PRO
    · Jun 1, 2018 · 3773 views
    This topic created in 2895 days ago, the information mentioned may be changed or developed.

    因为 UUID 几乎是唯一的,并且因此应该是很难猜出的,因此可否使用 UUID 直接的代替权限验证?

    即:仅在获取 UUID 的时候进行权限验证,后续利用 UUID 进行操作不鉴权直接视为拥有权限?

    1. 用户抓包主动泄漏 UUID 不在风险考虑范围内
    2. 与服务器全 HTTPS 通信因此各种劫持不在风险考虑范围内
    3. 工作人员泄漏 UUID 不在考虑范围内

    请问是否有什么风险?比如说 UUID 虽然唯一但是有什么规律进行很轻松的猜测?

    18 replies    2018-06-01 16:01:48 +08:00
    justfindu
        1
    justfindu  
       Jun 1, 2018   ❤️ 4
    what... 永久不过期么... 一朝泄露终身受用 好好好
    yylucifer
        2
    yylucifer  
       Jun 1, 2018
    如果这个 uuid 是其他用户不可见的。。

    那么我想说这不就是 token 么?
    SingeeKing
        3
    SingeeKing  
    OP
    PRO
       Jun 1, 2018
    @justfindu #1 一个 UUID 所对应的对象「生命周期」 15 天左右,过了这个周期操作就没有意义了(所有操作逻辑上都是已完成不会返回任何信息也无法执行任何操作)

    @yylucifer #2 Token 是对用户唯一而这里的 UUID 是对对象唯一,多个用户可以拿到一个对象的 UUID
    justfindu
        4
    justfindu  
       Jun 1, 2018
    @SingeeKing 如果有其他相关的需要使用 UUID 关联, 一并修改么. 好好好!
    xkeyideal
        5
    xkeyideal  
       Jun 1, 2018   ❤️ 1
    什么都不考虑在范围内,那还要权限干啥
    88250
        6
    88250  
       Jun 1, 2018
    加密货币钱包就是这样的嘛。
    SingeeKing
        7
    SingeeKing  
    OP
    PRO
       Jun 1, 2018
    @justfindu #4 额什么意思?我这里的 UUID 唯一的作用就是将对象获取和权限验证放在了一起。表的物理关联还是使用外键实现的(可以认为修改掉 UUID 字段不会产生任何副作用)
    justfindu
        8
    justfindu  
       Jun 1, 2018
    @SingeeKing 好 这就是 token!
    SingeeKing
        9
    SingeeKing  
    OP
    PRO
       Jun 1, 2018
    @xkeyideal #5
    1 主动泄漏什么都能泄漏自然不用考虑
    2 HTTPS 通信中间人攻击和 1 一样吧,几乎防不胜防了
    3 「工作人员」很少,所有人都互相认识,并且没有泄漏的利益诉求(除非恶作剧不然送给别人别人都不会搞破坏的那种)

    主要就是想知道 UUID 如果纯猜测是有规矩可循还是如我所想的很难猜中一个(那个数学逻辑看得我头疼实在看不懂)
    xkeyideal
        10
    xkeyideal  
       Jun 1, 2018
    @SingeeKing 你的这种场景,uuid 就变成了 token,内部管理系统用用,没问题的,技术不能解决的可以用行政手段
    cout2013mr
        11
    cout2013mr  
       Jun 1, 2018
    你指的应该是 Oauth 授权吧?如果一个服务通过授权获取固定的 token,其他服务也是使用相同 token,那服务之间岂不是相当于裸奔哥的。内部系统可以这样搞,如果是对外的话,会被人玩死的吧
    misaka19000
        12
    misaka19000  
       Jun 1, 2018 via Android
    恭喜楼主重新发明了 cookie 的验证策略
    Finest
        13
    Finest  
       Jun 1, 2018
    https 就不能中间人攻击?
    auin
        14
    auin  
       Jun 1, 2018
    权限系统最主要的是分账号、角色、功能管理,全部做完整后,你的这个和 sessionid、cas 中的 token、oauth 的 token 又有啥区别的
    zjp
        15
    zjp  
       Jun 1, 2018 via Android
    别纠结 UUID 了,楼主说的就是 token,只是表示的是一个角色而不是用户。要想满足随机、唯一、不能猜测就用 snowflake
    a7a2
        16
    a7a2  
       Jun 1, 2018
    15L 说对了 便是 token 而已。而且可以加上参数一起跟 uuid hash 运算就出一个可变有控制有效期的 token 了
    hahamy
        17
    hahamy  
       Jun 1, 2018
    华夏万家 app,手机号注册后登录,只要填写手机号码就可以了,不下发验证码,不用密码,点登录后提示检测中,然后就登录上了,应该就是用的类似的原理
    当然也有可能都没用到 uuid,就是 app 生成个 token 标识
    otakustay
        18
    otakustay  
       Jun 1, 2018
    这不就是你帮用户生成密码么……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2450 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 15:42 · PVG 23:42 · LAX 08:42 · JFK 11:42
    ♥ Do have faith in what you're doing.