如何在网站上支持匿名



我正在制作一个带有投票系统的网站(使用PHP,JavaScript和MySQL),该系统允许人们匿名投票,但只能投票一次。

这意味着我的系统必须知道谁投票了(因为我必须检查用户是否已经投票),但我不想将用户名或用户的IP地址存储在数据库中(破坏匿名性)。我不知道如何开始,我需要一些指导方针;我应该寻找什么?

你最糟糕的问题是如何确保你的用户只投票一次,但这不是问题的重点:你问的是如何确保匿名性。

这相当简单:将您用于单次投票的任何内容视为密码,并对其进行哈希处理。因此,为了论证起见,让我们说您正在使用IP。我知道这个问题,但让我们假设这是你的选择。

  • 用户投票
  • 您对 IP 进行哈希处理并保存。
  • 您甚至可以将其保存在其他位置。甚至不需要保存哪个哈希投票哪个选项。
  • 用户再次投票 -> IP 哈希在数据库中准备就绪。
  • 如果有人已经投票,不要放弃,不要回复"你已经投票了",但只是不要保存投票。这样甚至无法知道这台机器是否投票

请注意,这是关于匿名性的,而不是关于如何确保单一投票。

正如Lix所说,在不存储IP地址或强迫用户注册的情况下,唯一的方法是存储链接到会话的Cookie,但这当然绝不是解决方案,因为Cookie可以很容易地清除。

您可以尝试使用持久性 Cookie 解决方案,例如 evercookie,但如果我是实现类似内容的网站的用户,那会比注册更让我烦恼,而且无论使用什么方法,它们总是可以绕过以删除 Cookie/识别信息。

另一种

可能性是另一种形式的持久性Cookie,它去年(或者是2012年 - 我忘记了),它利用Flash来存储Cookie。这些 Cookie 可以在多个浏览器中访问。一个这样的解决方案是flash-cookie,但同样,这可能会惹恼用户,并且不是100%可靠,因为并非所有用户都启用了或安装了Flash。

最新更新