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

这样的明文接口设计是否已经满足了大多数场景下的 openapi 的安全要求

  •  
  •   aftereclipse · 2017-08-01 17:51:19 +08:00 · 2602 次点击
    这是一个创建于 2704 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前提说明:面向应用的 openapi 调用(不使用 ouath 验证)

    首先分配给调用方 appKey(用于身份校验)和 appSecret(用于签名)

    接口基本构成 appKey,reqId,timstamp,业务参数,sign

    最后的参数 sign = md5(appSecret+appKey=xxx+reqId=xxx+timestamp=xxx+username=xx+vip=xxx+appSecret) 参数是以 key 增序排列的 增加了 reqId (使用 UUID)用来防范重放攻击

    说明: 我们假定 timestamp 的有效时间是 1 小时,即 now-1 <timestmap< now+1 都是有效的 这时 reqId(存储在 redis 中)我们设置有效时间是 1 小时 校验逻辑是先验证签名,再验证 timstamp 有效性,再验证 reqId 有效性。 sign 保证了传输过程中没有被篡改,timestamp+reqId 保证没有重放攻击(因为在接下来的一个小时内,重放攻击发生时,因为 reqId 已经使用过,服务会被拒绝。过了这个小时,重放攻击会因为 timstamp 失效而被拒绝服务)

    后端:reqId 存放在 redis,appSecret 也存放在 redis 用来提高访问性能

    后续:启用 https 可以防止明文传输被人解读

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2807 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:02 · PVG 23:02 · LAX 07:02 · JFK 10:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.