V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
imlewc
V2EX  ›  问与答

与 APP 交互的 API 怎么保证安全呢?

  •  
  •   imlewc · 2018-05-29 00:12:21 +08:00 · 781 次点击
    这是一个创建于 2375 天前的主题,其中的信息可能已经有所发展或是发生改变。

    APP 启动的时候 调用注册 获取一个 APPID 以及 APP secret 再通过签名算法,列了个比较流行的签名算法

    • 对所有 API 请求参数(包括公共参数和业务参数,但除去 sign 参数和 byte[]类型的参数),根据参数名称的 ASCII 码表的顺序排序。如:foo:1, bar:2, foo_bar:3, foobar:4 排序后的顺序是 bar:2, foo:1, foo_bar:3, foobar:4。

    • 将排序好的参数名和参数值拼装在一起,根据上面的示例得到的结果为:bar2foo1foo_bar3foobar4。

    • 把拼装好的字符串采用 utf-8 编码,使用签名算法对编码后的字节流进行摘要。如果使用 MD5 算法,则需要在拼装的字符串前后加上 app 的 secret 后,再进行摘要,如:md5(secret+bar2foo1foo_bar3foobar4+secret);如果使用 HMAC_MD5 算法,则需要用 app 的 secret 初始化摘要算法后,再进行摘要,如:hmac_md5(bar2foo1foo_bar3foobar4)。

    • 将摘要得到的字节流结果使用十六进制表示,如:hex(“ helloworld ”.getBytes(“ utf-8 ”)) = “ 68656C6C6F776F726C64 ”

    假如 APP 被反编译了怎么破?? 我就能拿到你的各种逻辑了

    再问下 这种 APP 的数据加密方案,大家有什么好的建议

    deston
        1
    deston  
       2018-05-29 08:34:04 +08:00 via Android
    用 https 不就好了?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5440 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:09 · PVG 15:09 · LAX 23:09 · JFK 02:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.