首页 > 解决方案 > 这种编码方法可以利用吗?

问题描述

我是应用程序开发的新手,目前正在 xcode 中使用 swift 开发一个 ios 应用程序。在应用程序开发过程中,我注意到我不应该将 API 机密等敏感信息存储为局部变量。我假设这是因为有查看应用程序代码的方法。

我正在开发的应用程序没有帐户或用户登录,我不希望它这样做。为简单起见,我将这样解释:

用户可以使用该用户指定的某个房间 ID 创建一个“房间”。用户的设备有一个关联的 ID,该 ID 保存到数据库中,以表明创建的房间归该用户所有。

指定为客人的另一用户可以使用所述房间ID加入所述房间。当他们尝试加入房间时,会根据数据库检查他们的设备 ID,并指定一个本地布尔值来说明此用户是否是主机。

无论用户是否是主机,都会开始到另一个视图控制器,并且也会发送布尔值。从这一点开始,只有在布尔值指定用户是主机时才会调用函数和语句,只允许主机某些权限。

我担心的是,有一些方法可以利用这一点,这样客人可能会以某种方式更改或设置本地布尔值,以表示他们不是主人。我应该担心这是一个潜在的安全问题吗?除了特定于设备的 ID 之外,在此应用程序中不会保存或使用主人或客人的个人信息,这些 ID 保存在数据库中或对照数据库进行检查,但我仍然希望只允许主机特定房间权限的安全性。

标签: iossecurityapi-keysecret-key

解决方案


我假设这是因为有查看应用程序代码的方法。

不准确,但最好假设这是真的。您的确切源代码不可用,但可以提取应用程序中存储的任何数据,并且可以对应用程序实现的任何算法进行逆向工程。您无法在发送给用户的应用程序中隐藏任何内容。

我担心的是,有一些方法可以利用这一点,这样客人可能会以某种方式更改或设置本地布尔值,以表示他们不是主人。

这是真的,但并不是真正的主要安全问题。根本问题是服务器永远不能信任应用程序。我可以自由地创建自己的应用程序来连接到您的服务器并发送我想要的任何内容。服务器必须对此具有弹性。因此,必须在服务器上执行诸如“房间所有者”检查之类的事情。您不能依赖执行它们的应用程序。您必须假设该应用程序处于其用户的完全控制之下。鉴于此,您看到了哪些安全问题?


推荐阅读