Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 小型API安全最佳实践_Php_Iphone_Security_Rest_Basic Authentication - Fatal编程技术网

Php 小型API安全最佳实践

Php 小型API安全最佳实践,php,iphone,security,rest,basic-authentication,Php,Iphone,Security,Rest,Basic Authentication,我的情况是,我制作了一个iPhone应用程序和一个RESTful API(通过php脚本)来与各个客户机和仓库数据库通信 目前,我使用自签名证书手动设置各个web服务器。创建一个具有特殊长随机密码的用户(该密码已硬编码到应用程序中)。设置他们的web服务器,使我的php脚本需要基本身份验证,并且只授予特定用户访问权限 在我的应用程序端,用户名/密码是硬编码的,它忽略了服务器具有自签名证书这一事实 此型号有什么问题吗?任何人都可以通过使用基本身份验证设置和自签名证书将应用程序指向自己的服务器,轻松

我的情况是,我制作了一个iPhone应用程序和一个RESTful API(通过php脚本)来与各个客户机和仓库数据库通信

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

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


此型号有什么问题吗?

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

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

不过,这假设用户名和密码至少很难通过反汇编代码获得,当然也要理解,硬编码的用户名和密码总是会被能够读取反汇编代码的坚定的破解者窃取

当然,有了用户名和密码,他们可以按自己的条款访问您的API,而其他人则可以为该帐户付费

除了将值硬编码到应用程序中之外,您是否可以让应用程序通过一些设置过程,用户第一次输入凭据?即使这样,单个用户的凭据也可能从其设备中被盗,但至少是单个用户,您可以阻止访问并设置新帐户。这是标准场景


此外,使用类似TestFlight(您甚至可以自己滚动)的方式,而不是通过AppStore,向您的客户发布此信息也是可行的。这将有助于限制单独构建的应用程序进入市场的情况,更不用说有助于减少应用程序商店中的混乱情况。

当然。窃取应用程序并将其加载到一堆其他idevices上。@MarcB我的应用程序必须按服务器设置。这意味着如果你侧面加载应用程序,应用程序不知道服务器在哪里。我们有很多客户端,他们必须将应用程序指向特定的服务器。我不是在一台服务器上运行所有东西的情况下……如果我使用SSL证书固定会怎么样?@Hackmodford,我在回答中提到了固定,尽管我没有使用这个术语。我对我的答案进行了编辑,将该术语包括在内。K我认为证书钉扎对于我们的情况来说已经足够了。谢谢:)