【发布时间】:2017-07-24 18:07:04
【问题描述】:
我已根据 Apple 的建议设置了应用购买收据验证,方法是将收据发送到我的服务器,然后再将其发送到 Apple 的服务器进行验证。我所有的收据处理都是在服务器端处理的,并且运行良好。我的服务器向我的应用程序发送回一个非常模糊的代码,以确认购买是否有效。我在应用程序端使用了一种非常强大的混淆方法来掩盖该返回码的情况,以使越狱黑客尽可能难以击败它。
问题是我将我的 php 文件存储在我的 Web 服务器上的受密码保护的文件夹中,并且我担心当应用程序本身具有嵌入其中的目录的用户名和密码时,如何将其视为安全的将收据发送到 php 文件开始。
我的应用仅使用服务器进行应用内购买的收据验证。所有其他功能都在应用程序本身中,因此我不会强制每个用户拥有一个具有唯一用户名和密码的帐户。
我正在使用 URLSession 通过 TLS 1.2 https 连接与服务器进行通信,因此该部分是安全的,但我想不出一种方法来阻止坚定的黑客从应用程序中提取用户名和密码他们的设备,并可以直接访问我的服务器文件夹。具有该功能的人可以轻松地修改 php 文件以始终返回指示有效购买的代码。
我确实在应用程序中混淆了用户名和密码,以至于我认为大多数人可能会放弃尝试弄清楚它,但我知道我只是让提取变得更加困难,而不是几乎不可能。
对此有什么想法吗?我在网上找到的几乎所有与此相关的内容都与不通过 http 传输用户名和密码有关,而不是越狱设备的更大问题。
【问题讨论】:
-
为什么要在应用中包含用户名和密码?只需使用经过检查的随机生成的令牌,例如由服务器端的 PHP 脚本执行,仅对特定 API 有用。
-
Robert 我对从 iOS 应用程序与服务器进行交互还很陌生。服务器目录使用 .htaccess 文件进行密码保护。我正在使用 NSURLSession 的基本身份验证来访问 .php 文件。我想我要问的问题是如何在没有硬编码密码和用户名的情况下授予对这个受保护目录的访问权限。
-
不要使用基本身份验证,只需使用 HTTP 获取参数并在服务器端 PHP 脚本中检查。当然,您必须为此学习一点 PHP。再说一遍:永远不要将允许直接文件访问的网络服务器凭据嵌入到应用程序中!
-
我认为我在您的建议中遗漏了一个关键细节。到目前为止,为了快速了解我的实现,我的服务器上有一个非常强大的 .php 文件,它从我的应用程序接收 https POST 参数,传递 Apple 收据的 json,以便我可以在服务器端验证它。该 .php 文件位于我服务器上受密码保护的目录中,因此我的应用程序(使用 NSURLSession 连接到服务器)收到身份验证质询,并且必须使用用户名和密码进行响应。使用 GET 会有什么不同?我不会仍然接受挑战吗?谢谢!!
-
“密码保护文件夹”你用什么方法?希望这意味着您使用了
.htaccess文件或类似文件。
标签: ios security authentication passwords nsurlsession