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