小型API安全性最佳实践

时间:2013-12-03 20:00:35

标签: php iphone security rest basic-authentication

我处于这样一种情况:我使用iPhone应用程序和RESTful API(通过php脚本)与各个客户仓库数据库进行通信。

目前,我使用自签名证书手动设置各个Web服务器。创建一个具有特殊长随机密码的用户(它被硬编码到应用程序中)。设置他们的Web服务器,以便我的php脚本需要基本身份验证,并且只授予对特定用户的访问权。

在我的应用程序端,用户名/密码是硬编码的,它忽略了服务器具有自签名证书的事实。

这个型号有什么问题吗?

1 个答案:

答案 0 :(得分:1)

任何人都可以通过使用基本身份验证设置和自签名证书将应用程序指向自己的服务器来轻松捕获用户名/密码。

为了防止这种情况,您还可以验证证书签名(或公钥)和公用名是否与您创建的自签名证书(再次,硬编码)相匹配。这称为证书固定

尽管如此,这假设通过反汇编代码至少难以获得用户名和密码,当然也知道硬编码的用户名和密码总是被一个能够阅读你的反汇编代码的坚定的破解者窃取。 / p>

使用用户名和密码,他们可以按照自己的条件访问您的API,当然,有人支付该帐户。

您可以让应用程序通过一些用户首次输入凭据的设置过程,而不是硬编码到应用程序中的值吗?即使这样,个人用户的凭据也可能从他们的设备中被盗,但至少它只是一个用户,您可以阻止访问并设置新帐户。这是标准方案。

此外,使用TestFlight(您甚至可以自己推送)而不是通过AppStore将此版本发布给您的客户可能是可行的。这将有助于限制单独构建的应用程序进入疯狂的情况,更不用说帮助减少应用程序商店中的混乱。