【发布时间】:2012-01-02 19:52:35
【问题描述】:
注意:尽管我在 iOS 应用程序的上下文中提出了这个问题,但我认为它并不局限于在该特定操作系统上运行的应用程序。
我正在开发一个将用户数据备份到服务器的 iOS 应用程序,并且我正在尝试找出在服务器端验证被更新的用户实际上是真实用户的最佳方法。每个用户都有一个 id (uid)。如果这就是我依赖服务器端的全部,那么我想这个过程会是这样的:
- 用户第一次运行应用程序
- 在应用程序中创建帐户,该应用程序与服务器通信以在服务器上创建帐户并获取唯一的“用户 ID”(uid)
- 应用存储此 uid,以便在与服务器的后续通信中识别用户
但是,如果有人要破解他们 iPhone 上的应用程序,他们可以更改用户 ID 值,然后他们会立即访问/允许他们修改其他用户的数据。
我正在考虑的当前解决方案是用户接收 2 个唯一 ID、uid(只是一个自动递增的数字)和一个更长、更复杂的密钥字符串。因此,与服务器的所有通信都必须同时发送 uid 和密钥。服务器将验证它们是否匹配,以确保用户确实是应用程序所说的那个人。
所以,我的问题有两个:
- 这是实现此目的的正确方法吗?还是我应该采用其他一些标准方法?
- 如果这是正确的方法,生成唯一密钥的推荐方法是什么?
【问题讨论】:
-
有点切题,但请参阅 dereknewton.com/2011/04/dropbox-authentication-static-host-ids 了解 Dropbox 如何解决此问题。作者认为该解决方案“不安全”,但文章加上 cmets 读起来很有趣。
标签: ios security verification server-side-validation