在iOS上唯一且安全地标识用户

在iOS上唯一且安全地标识用户,ios,iphone,security,authentication,uniqueidentifier,Ios,Iphone,Security,Authentication,Uniqueidentifier,我有一个iOS应用程序,我想让用户对特定事物进行评级,评级范围从1到5。这意味着无需登录即可工作 问题是,我想唯一地识别每个用户,这样就不会有人滥用系统,对同一件事进行两次评级,或者只是用虚假评级向服务器发送垃圾邮件 所以我需要一个标识符 唯一(不应因为系统认为用户已经投票而拒绝用户投票) 重新安装后可恢复(防止“重新安装和重新安装”) 可验证(以防止向服务器发送一些带有虚假标识符和垃圾邮件评级的批量请求) 我知道这是不可能的!为了确保安全,如果某个聪明的男人/女孩真的想要,他可以破坏系统。但是

我有一个iOS应用程序,我想让用户对特定事物进行评级,评级范围从1到5。这意味着无需登录即可工作

问题是,我想唯一地识别每个用户,这样就不会有人滥用系统,对同一件事进行两次评级,或者只是用虚假评级向服务器发送垃圾邮件

所以我需要一个标识符

  • 唯一(不应因为系统认为用户已经投票而拒绝用户投票)
  • 重新安装后可恢复(防止“重新安装和重新安装”)
  • 可验证(以防止向服务器发送一些带有虚假标识符和垃圾邮件评级的批量请求)
  • 我知道这是不可能的!为了确保安全,如果某个聪明的男人/女孩真的想要,他可以破坏系统。但是我想要一个尽可能安全的系统来识别用户。而且,当有人开始滥发收视率,而我无法控制时,它会破坏整个系统

    此外,我还考虑过只向用户索要电子邮件并从设备生成密码。因此,用户只需输入他的电子邮件地址,然后设备就可以连接到该电子邮件地址。也许用MAC地址?但这一次也是变化无常的

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

    • IP地址(很容易更改,而且变化很大。而且它不是唯一的)
    • UUID(它是不可验证的。有人可以生成一些随机的X长度数字)
    • (未满填充2.和3.)
    真的帮不了我

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


    不欢迎回答“没有人会试图攻击你的应用程序,你的应用程序很差”或“你的应用程序很差”,因为这也是一个科学问题。

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

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

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

    但令人遗憾的是,这两者都不是。和3。。它是不可验证的(是什么阻止某人生成随机的“xxxx xxxx xxxx”编号并将其推送到服务器?此外,供应商ID明确表示将在重新安装应用程序后重置。设备正在向我的服务器发送请求:
    ID:4344-3434-3233-4343评级:5
    现在服务器正在保存此项。下次他可以检查此项。但任何人都可以生成设备发出的相同请求,并只需输入in另一个号码。一个又一个。服务器永远不会知道它是真实的ID还是伪造的ID。