2010-11-15 31 views
5

我有一个问题,让我的秘密API密钥遍布全球,潜在的数千移动设备上。它很容易被黑客利用并用于恶意目的。不想在移动设备上存储秘密的Facebook/Twitter API密钥,设计模式?

那么我有什么选择? 我会猜测一个私人服务器,它具有秘密的API密钥和一个封装所有方法调用的Web服务。因此,而不是移动设备具有的密钥和做一些事情,如:
List<Friends> = service.GetFriends(secretKey);

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

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

当然,恶意黑客可能只是我的web服务与假的设备ID,但至少我现在有控制黑名单deviceID的。它还引入了一些潜在的带宽问题,但这不是那么重要。

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

其他好主意?

回答

1

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

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

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

TL; DR

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