api - 不想在移动设备上存储 secret 的 Facebook/Twitter API key ,设计模式?

标签 api storage key

我有一个问题,就是让我的 secret API key 遍布世界各地,可能有成千上万的移动设备。它很容易被黑客入侵并用于恶意目的。

那么我有哪些选择呢?
我猜想有一个私有(private)服务器,它具有 secret 的 API key 和一个封装所有方法调用的 Web 服务。因此,不是移动设备拥有 key ,而是执行以下操作:List<Friends> = service.GetFriends(secretKey);
如果我的 secret API key 被泄露并被用于垃圾邮件/滥用目的,我必须关闭所有用户的使用,让我的应用程序陷入困境。

所以我的想法是我可以使用移动设备唯一的设备 ID 并执行以下操作:List<Friends> = myService.GetFriends(deviceID);
当然,恶意黑客可以使用伪造的 deviceID 调用我的 Web 服务,但至少我现在可以控制将 deviceID 列入黑名单。它还引入了一些潜在的带宽问题,但这并不重要。

真正的 PKI 可能是不可能的,因为目标设备在当前版本中不处理 HTTP 客户端证书。

还有什么好主意吗?

最佳答案

您不想将 API key 发布到 Facebook 或 Twitter,甚至在客户端中被混淆。

通过您控制的服务代理您的直觉是正确的。限制对该服务的访问取决于您 - 未经授权的使用风险有多大?设备 ID 是设备/用户身份的一个很好的线索,但可以伪造。

您可以使用更强大的身份验证方法(SMS 身份验证等)来建立长期 session 或设备 key ,但是这些方法更复杂,并且给最终用户带来了更高的负担。

TL;DR

保护您的平台 API key 。保护您自己的 API 足以保护您的需求。

关于api - 不想在移动设备上存储 secret 的 Facebook/Twitter API key ,设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4188493/

相关文章:

javascript - 使用 GitHub API 检查 repo 是否已加星标

python - Plotly.js 连接到 Django Rest Framework API - 这可能吗?如果可能的话,如何实现?

java - 在 API 请求上使用附加 header 参数跳过 Oauth 2.0 授权 - Spring Security

java - 我的应用程序数据消耗 724MB 存储空间

MySQL "binary"与 "char character set binary"

c++ - AES 和 key 长度错误

java - Android 无法触发 onKey 事件

java - 如何使用 jraw 生成 Reddit 保存项目的列表?

android - 如何从内部存储中选择图像并将其插入到 SQLite 中?

sql - Linq 自连接组合键