这种编码方法是否可以利用?

Is this method of coding exploitable?

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

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

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

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

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

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

I'm assuming this is because there are methods of viewing an app's code.

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

My worry is that there is some way to exploit this such that guests may somehow change or set that local Boolean to signify that they are the host when they are not.

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