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

怎样防止自己的 api 被别人调用?

  •  
  •   stanhou · 2016-01-10 12:15:25 +08:00 · 10116 次点击
    这是一个创建于 3241 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最简单的例子, app 里刷新新闻,调用 mysite.com/news ,然后怎样防止别人调用这个 mysite.com/news 。
    当然我觉得这理论上是不可能防止的,因为别人做个 app 可以完全模仿用户行为。
    我只是想问,有什么有效的方法能增加被调用的难度么?
    stanhou
        1
    stanhou  
    OP
       2016-01-10 12:17:02 +08:00
    注意我说的不是模仿用户,而是 app 。
    或者换个问法:
    有什么有效的方式,可以在服务器端知道这个请求是来自自己的 app ,而不是山寨 app 。
    miaol
        2
    miaol  
       2016-01-10 12:39:24 +08:00
    请求的时候设置 token 或者进行加密
    lshero
        3
    lshero  
       2016-01-10 13:19:24 +08:00 via Android
    最简单的加个签名验证,参数按照一定规则排序后生成签名,不过 APP 被人破解也没啥办法了
    yaodong
        4
    yaodong  
       2016-01-10 13:29:55 +08:00
    APP 作为一个 OAuth 客户端,和服务端通过 OAuth 协议通讯,使用 HTTPS ,且本地保护好 access_token 。

    设置访问频率限制。
    love
        5
    love  
       2016-01-10 14:40:09 +08:00
    @yaodong 你这里搞个 oauth 除了给自己添麻烦还有别的意义吗
    horsley
        6
    horsley  
       2016-01-10 15:48:20 +08:00
    提供一个简单的方法,可以防君子和一般的小人。
    参数用 base64 编码,用自定义的 base64 码表,恩 app 里面要做些手脚不然人家随便静态分析就拿到你的码表了
    dphdjy
        7
    dphdjy  
       2016-01-10 18:58:34 +08:00 via Android
    →_→ 表示新闻类~没有拆的欲望。。。我只拆杂志阅读类应用
    dphdjy
        8
    dphdjy  
       2016-01-10 19:30:59 +08:00 via Android
    拆了不少应用主要方法
    1. 加密(wenku8 的 base64)
    2. 签名(coolapk 的 md5 ,轻国的 md5 奇偶重排)
    3. token & session(大多)
    4. 某二进制序列化方案

    进一步加强
    1. 算法和秘钥用 C 写
    2. 揉上时间戳,设备码,用户 ID

    最佳方案
    1. 开放 API 限定合理的使用次数

    (・ิϖ・ิ)っ实际上只增加破解难度~并不能抵制~
    joe1213
        9
    joe1213  
       2016-01-10 20:23:04 +08:00
    新闻类的连使用次数都然并卵吧。如果不是大站,一天能更新几条新闻,好歹不能把正常用户给限制出去吧。
    yaodong
        10
    yaodong  
       2016-01-11 02:18:19 +08:00
    @love 一点都不麻烦,反而是最方便开发的一种模式。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   979 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 22:49 · PVG 06:49 · LAX 14:49 · JFK 17:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.