我有一个问题就是让我的秘密API密钥在全世界范围内成千上万的移动设备上.它可能很容易受到攻击并被黑客用于恶意目的.
那么我的选择是什么?我猜一个私有服务器,它有秘密的API密钥和一个封装所有方法调用的Web服务.因此,而不是具有密钥的移动设备,并执行以下操作:
List<Friends> = service.GetFriends(secretKey);
如果我的秘密API密钥被泄露并用于垃圾邮件/滥用目的,我必须关闭所有用户的使用,让我的应用程序死在海中.
所以我的想法是我可以使用移动设备唯一的设备ID并执行:
List<Friends> = myService.GetFriends(deviceID);
当然,恶意黑客可以使用假的deviceID来调用我的Web服务,但至少我现在可以控制将设备ID列入黑名单.它还引入了一些潜在的带宽问题,但这不是一个问题.
真正的PKI可能是不可能的,因为目标设备不处理当前版本中的HTTP客户端证书.
还有其他好主意吗?
您不想将 API 密钥发布到 Facebook 或 Twitter,即使在客户端中进行了混淆。
您的直觉是正确的,可以通过您控制的服务进行代理。限制对该服务的访问取决于您 - 未经授权的使用风险有多大?设备 ID 是设备/用户身份的一个很好的线索,但可以伪造。
您可以使用更强大的身份验证方法(短信身份验证等)来建立长期会话或设备密钥,但是这些方法更加复杂,并且会给最终用户带来更高的负担。
长话短说
保护您的平台 API 密钥。确保您自己的 API 足以满足您的需求。
| 归档时间: |
|
| 查看次数: |
740 次 |
| 最近记录: |