【问题标题】:Uniquely and safely identify a user on iOS在 iOS 上唯一且安全地识别用户
【发布时间】:2015-09-17 22:49:26
【问题描述】:

我有一个 iOS 应用程序,我希望用户用 1 到 5 的评分对特定事物进行评分。它旨在无需登录即可工作。

问题是我想唯一地识别每个用户,这样没有人可以滥用系统并对同一事物进行两次评分和/或只是向服务器发送虚假评分的垃圾邮件。

所以我需要一个标识符

  1. 唯一(用户不应因为系统认为他已经投票而被拒绝投票)
  2. 重新安装后可恢复(以防止“重新安装和撤销”)
  3. 可验证(以防止向服务器发送一些带有一些虚假标识符和垃圾邮件评级的大量请求)

我知道这是不可能的!为了安全地做到这一点,如果某个聪明的男孩/女孩真的想要它,他可以破坏系统。但我想要一些尽可能安全的系统来识别用户。此外,当有人开始发送垃圾评级而我无法控制时,它可能会破坏整个系统。

我还考虑过只向用户询问电子邮件并从设备生成密码。因此,用户只需输入他的电子邮件地址,然后设备就会连接到该电子邮件地址。也许使用MAC地址?不过话说回来,这个也是可以改变的。

我知道以下属性不起作用:

Identifying anonymous users 并没有真正帮助我。

那么我可以尝试使用什么?所有这些的组合?是否有一些关于如何计算这些身份验证令牌的指南?

“没有人会尝试破解你的应用程序”或“你的应用程序很烂”这样的答案是不受欢迎的,因为这也是一个科学问题。

【问题讨论】:

    标签: ios iphone security authentication uniqueidentifier


    【解决方案1】:

    您可以发送Vendor ID 以及该用户的ratings。如果有用户评分,请尝试在数据库服务器中检查此供应商 ID 是否存在。如果存在,请宣传“您已评分”的消息。简而言之,您可以使用供应商 ID 来唯一标识特定用户。

    以下是获取供应商 ID 的方法:

    NSString *udid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    

    【讨论】:

    • 但遗憾的是,这并不能阻止 2. 和 3.. 它是不可验证的(是什么阻止了某人生成随机的“xxxx-xxxx-xxxx-xxxx”数字并将它们推送到服务器?并且供应商 ID 也明确意味着在重新安装应用程序后重置。
    • 设备正在向我的服务器发送请求:ID: 4344-3434-3233-4343 Rating: 5 现在服务器正在保存这个。下次他可以检查一下。但是任何人都可以生成与设备相同的请求,然后输入另一个数字。还有一个又一个。并且服务器永远不会知道它是一个真实的 ID 还是只是一些伪造的。
    猜你喜欢
    • 2017-02-09
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    相关资源
    最近更新 更多