注意:虽然我在 iOS 应用程序的上下文中提出了这个问题,但我不认为它仅限于在该特定操作系统上运行的应用程序。
我正在开发一个 iOS 应用程序,它将用户数据备份到服务器,并且我试图找出在服务器端验证被更新的用户实际上是真实用户的最佳方法。每个用户都有一个 id ( uid
)。如果这就是我所依赖的服务器端,那么我想这个过程会是这样的:
- 用户第一次运行应用程序
- 在应用程序中创建帐户,该应用程序与服务器通信以在服务器上创建帐户并获取唯一的“用户 ID”(uid)
- 应用程序存储此 uid,以便它可以在与服务器的后续通信中识别用户
但是,如果有人要破解他们 iPhone 上的应用程序,他们可以更改用户 ID 值,然后立即让他们访问/允许他们修改其他用户的数据。
我正在考虑的当前解决方案是用户接收 2 个唯一 ID、uid(只是一个自动递增的数字)和一个更长、更复杂的密钥字符串。因此,与服务器的所有通信都必须同时发送 uid 和密钥。服务器将验证它们是否匹配,以确保用户确实是应用程序所说的那个人。
所以,我的问题有两个:
- 这是实现这一目标的正确方法吗?还是我应该采用其他一些标准方法?
- 如果这是正确的方法,那么生成唯一密钥的推荐方法是什么?