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

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

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

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

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

(・ิϖ・ิ)っ实际上只增加破解难度~并不能抵制~
joe1213
2016-01-10 20:23:04 +08:00
新闻类的连使用次数都然并卵吧。如果不是大站,一天能更新几条新闻,好歹不能把正常用户给限制出去吧。
yaodong
2016-01-11 02:18:19 +08:00
@love 一点都不麻烦,反而是最方便开发的一种模式。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/249651

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX