我所处的情况是,我制作了一个iPhone应用程序和一个RESTful API (通过一个php脚本)来与单个客户端仓库数据库进行通信。
目前,我使用自签名证书手动设置单个web服务器。创建一个具有特殊长随机密码的用户(它是硬编码到应用程序中)。设置他们的web服务器,以便我的php脚本需要基本身份验证,并且只授予特定用户访问权限。
在我的应用程序方面,用户名/密码是硬编码的,它忽略了服务器有一个自签名证书的事实。
这个型号有什么问题吗?
发布于 2013-12-03 20:29:07
任何人都可以通过使用基本身份验证设置和自签名证书将应用程序指向自己的服务器来轻松捕获用户名/密码。
为了防止这种情况,您还可以验证证书签名(或公钥)和公共名称是否与您创建的自签名证书(同样是硬编码的证书)相匹配。这就是所谓的证书钉扎。
尽管如此,这还是假设至少很难通过解压缩代码来获得用户名和密码,当然,要理解硬编码用户名和密码总是会被能够读取反汇编代码的确定的破解者窃取的。
当然,通过用户名和密码,他们可以以自己的方式访问您的API,而其他人则支付帐户费用。
与其将硬代码值输入到应用程序中,您还能让应用程序在用户第一次输入凭据时进行一些设置过程吗?即使这样,单个用户的凭据也可能会从他们的设备中被窃取,但至少是一个用户,您可以阻止访问并设置一个新帐户。这是标准的场景。
而且,使用类似于TestFlight (甚至可以滚动自己的)而不是通过AppStore向客户发布这个版本也是可行的。这将有助于限制单独构建的应用程序进入野外的情况,更不用说帮助减少应用程序商店的杂乱了。
https://stackoverflow.com/questions/20360505
复制相似问题