我正在建立一个网站(使用PHP,JavaScript和MySQL),投票系统允许人们匿名投票,但只有一次。
这意味着我的系统必须知道谁投票(因为我必须检查用户是否已经投票)但我不想将用户名或用户的IP地址存储在数据库中(破坏了匿名性) )。我不知道怎么开始,我需要一些指导;我应该寻找什么?
答案 0 :(得分:5)
你最糟糕的问题是如何确保你的用户只投票一次,但这不是问题的关键:你问的是如何确保不相干
这很容易:将您用于单一投票的任何内容视为密码,并将其哈希。因此,为了论证,您可以使用IP。我知道这个问题,但我们假设这是你的选择。
请注意,这是关于不相关的,而不是关于如何确保单一投票。
答案 1 :(得分:1)
正如Lix所说,真正唯一的方法是在不存储IP地址或强制用户注册的情况下存储链接到会话的Cookie,但当然这绝不是一个解决方案,因为可以很容易地清除Cookies
您可以尝试使用持久性Cookie解决方案,例如evercookie,但如果我是实现类似内容的网站的用户,那么除了必须注册之外,它还会让我烦恼,无论如何使用方法时,可以始终绕过这些方法来删除Cookie /识别信息。
另一种可能性是持续性Cookie的另一种形式,它去年得到了很多宣传(或者是2012年 - 我忘了),它利用Flash来存储Cookie。可以在多个浏览器中访问这些Cookie。一个这样的解决方案是flash-cookie,但同样,这可能会惹恼用户,并且不会100%可靠,因为并非所有用户都启用了Flash或安装了Flash。