我有一个问题,让我的秘密API密钥在可能成千上万的移动设备上遍及世界各地。它很容易被黑客利用并用于恶意目的。
那么我有什么选择呢?我猜是一个私有服务器,它拥有秘密的API密钥和一个封装了所有方法调用的web服务。因此,不是让移动设备拥有密钥,而是这样做:
List<Friends> = service.GetFriends(secretKey);
如果我的秘密API密钥被泄露,并被用于垃圾邮件/滥用目的,我必须关闭所有用户的使用,让我的应用程序死在海里。
所以我的想法是,我可以使用移动设备唯一的设备ID并执行以下操作:
List<Friends> = myService.GetFriends(deviceID);
当然,恶意的黑客可以用假的deviceID调用我的web服务,但至少我现在可以控制将deviceID列入黑名单,这也带来了一些潜在的带宽问题,但这并不是那么令人担忧。
真正的PKI可能是不可能的,因为目标设备在当前版本中不处理HTTP客户端证书。
还有别的好主意吗?
发布于 2011-02-28 20:49:15
你不想把你的API密钥发布到Facebook或Twitter上,即使是在客户机上也是如此。
您的直觉通过您控制的服务进行代理是正确的。限制对该服务的访问由您决定-未经授权使用的风险有多大?设备ID是设备/用户身份的一个很好的线索,但也可能是伪造的。
您可以使用更强的身份验证方法(SMS、身份验证等)来建立长期会话或设备密钥,但是这些方法更加复杂,对最终用户造成了更高的负担。
TL;DR
保护您的平台API密钥。确保您自己的API足够安全,以保护您的需求。
https://stackoverflow.com/questions/4188493
复制相似问题