我正在为 iOS 应用程序设计 REST 服务。我想知道如何使 REST 服务安全,以便只允许来自 iOS 应用程序的请求?
我正在考虑使用共享密钥,但如果您检查请求,仍然会遇到问题。
另一种方法是使用 OAuth,这不是理想的解决方案。我希望能够在实际请求中进行身份验证,而不是在多个请求之间交换令牌。
我能想到的唯一解决方案是基于时间的加密。共享机密会根据服务器上请求仅在特定持续时间内有效的时间进行加密。
如果您通过 HTTPS 等受 SSL 保护的协议传输请求(并使用服务器证书来防止中间人攻击),嗅探器将看不到您的请求,因此烧入应用程序的共享秘密可以工作.
当然,如果有人真的想要,他们可以对您的应用程序进行逆向工程以找到其中存储的秘密。如果您正在构建与人们的银行帐户相关联的东西,那么请不要打扰。如果您只是想添加一小层保护以防止对您的服务进行微不足道的黑客攻击或 DDOS 攻击,那么这听起来是一种合理的方法。
虽然这确实可以解决,但最好的办法是使用某种登录机制,但这并不能阻止有人试图欺骗包含身份验证的应用程序。
您不能信任客户端,但如果您使用 OAuth 之类的东西,您至少可以阻止人们尝试。如果应用程序使用应用程序内购买,您可以将帐户验证为具有访问权限,然后按照该路线进行操作。然而,除此之外,没有任何“完美”的解决方案,可以这么说。