不想将秘密的Facebook/Twitter API密钥存储在移动设备上,设计模式?

Mag*_*son 5 api storage key

我有一个问题就是让我的秘密API密钥在全世界范围内成千上万的移动设备上.它可能很容易受到攻击并被黑客用于恶意目的.

那么我的选择是什么?我猜一个私有服务器,它有秘密的API密钥和一个封装所有方法调用的Web服务.因此,而不是具有密钥的移动设备,并执行以下操作:
List<Friends> = service.GetFriends(secretKey);

如果我的秘密API密钥被泄露并用于垃圾邮件/滥用目的,我必须关闭所有用户的使用,让我的应用程序死在海中.

所以我的想法是我可以使用移动设备唯一的设备ID并执行:
List<Friends> = myService.GetFriends(deviceID);

当然,恶意黑客可以使用假的deviceID来调用我的Web服务,但至少我现在可以控制将设备ID列入黑名单.它还引入了一些潜在的带宽问题,但这不是一个问题.

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

还有其他好主意吗?

Win*_*eld 1

您不想将 API 密钥发布到 Facebook 或 Twitter,即使在客户端中进行了混淆。

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

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

长话短说

保护您的平台 API 密钥。确保您自己的 API 足以满足您的需求。