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

关于动态鉴权 求教~

  •  
  •   Apiao · 154 天前 · 1558 次点击
    这是一个创建于 154 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    有一个对外的 API 接口,目前鉴权的解决方案是分发给用户一个 key,并通过一系列的加密手段完成鉴权,请求调用成功会返回一个可以直接访问收费资源的 url

    问题

    如果别人劫持了用户的一次请求,得到了通过鉴权后的 url,那么劫持者就可以在有效期内无数次使用这个 URL

    求解有没有比较好的解决方案,主要的目标是 1.解决上述问题 2.平滑升级(不影响旧用户的情况下,新用户启用新鉴权)

    19 回复  |  直到 2019-05-23 01:44:48 +08:00
        1
    Apiao   154 天前
    # 抛砖引玉
    目前我的一个想法是加入 IP 校验,即服务端鉴权时检验该 IP 是否为发起请求时的 IP,不是则拒绝,这个方案的优点是可以平滑升级,缺点是无法保证每次都能拿到用户的真实 IP,有误杀的风险(虽然我感觉风险挺低的。。)
    问该方案是否还有其他弊端?
        2
    raptor   154 天前
    不能直接在收费 URL 里鉴权?绑定 IP 当然是一个方法,还有就是限制请求次数,超过需要重新鉴权。
        3
    Takamine   154 天前 via Android
    我手机没流量了,把你手机开热点给我连一下:doge:。
        4
    hakono   154 天前 via iPhone
    收费资源 url 也鉴权嘛,如果不鉴权的话不用劫持流量,用户自己获取到了收费 url 后把 url 往网上一发,一样都是所有人都能艹你资源
        5
    lihongjie0209   154 天前
    为什么不直接在收费的 URL 做 3A?
        6
    Apiao   154 天前
    @raptor 其实收费的 url 里是有鉴权的,但这些信息都已经包含在先前返回的 url 里了,如果劫持者拿到这个 url 就可以直接访问
        7
    Apiao   154 天前
    @lihongjie0209 3A 具体是指?
        8
    Apiao   154 天前
    @hakono 对,其实就是只要有了后面的链接谁都能访问,因为所有校验信息都包含在 url 里了,这个要再重新做鉴权该如何操作呢?让用户加新的 key 吗?
        9
    smdbh   154 天前 via iPhone
    https?
        10
    theTd   154 天前
    https
        11
    swulling   154 天前 via iPhone
    防攻击用 https 就最简单了,兼容就同时允许 HTTP 和 https
        12
    swulling   154 天前 via iPhone
    @swulling 防中间人攻击
        13
    AlexaZhou   154 天前
    把通过过鉴权后的 url 关联到用户,对不同的用户返回不一样的资源 url,这样就可以计费到用户了
        14
    ihciah   154 天前
    问题场景倒是挺常见的,比如百度盘。。
    client 在使用完链接后主动请求 disable 这个资源?
        15
    micean   154 天前
    服务端识别不了中间人攻击吧
    什么样的资源?最好是自己做客户端
        16
    hakono   154 天前
    @Apiao 做 cookie 认证啊。你的 api 总不会不需要用户登录就能直接获取下载 url 吧。
    对下载 url 也做一个同样的登陆认证就行了。
        17
    jjianwen68   154 天前   ♥ 1
    不同的用户应该生成不同的 url,生成的 url 有访问频率限制和有效期,这样是不是够
        18
    wisej   154 天前 via Android
    @jjianwen68 赞同,资源 url 带有已鉴权的身份信息(比如对 uuid 进行对称加密)。其他人访问的时候就可以后端解密,对 url 里的 uuid 和访问这个 url 用户 uuid 进行一个比较
        19
    danmu17   154 天前
    典型的思路不清晰,也不去读业内规范。
    好奇是不是国内绝大多数的程序员都是这样的?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4713 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 02:02 · PVG 10:02 · LAX 19:02 · JFK 22:02
    ♥ Do have faith in what you're doing.