3

你如何处理公众投票(任何人都可以“喜欢或不喜欢”一篇文章)并限制他只能投票一次?

我必须使用cookies吗?(问题是他可以删除cookie并投票x999次)还是我将他的IP存储在数据库中?

4

5 回答 5

2

解决方案分为三个部分:

  1. 使用 cookie 防止重复投票
  2. 将所有投票事件存储在数据库中(ip、用户代理、投票/文章 ID、投票)
  3. 实现一个算法,该算法将每 24 小时运行一次,以删除从 #1 中逃脱的双重投票。该算法将使用来自 #2 的数据

仅使用 IP 是不合适的,因为它会使大量人退出投票系统。

于 2011-05-25T01:29:07.890 回答
1

使用 IP。

虽然您可能会导致一群人只从一个 IP 后面投票一次,但替代方案很容易绕过(不要存储 cookie)。

于 2011-05-25T01:24:37.177 回答
0

我会说两者都做,这样如果有人拥有动态 IP,他们将不得不同时更改 IP 和删除 cookie。

于 2011-05-25T01:24:05.983 回答
0

如果用户进行身份验证,即他们以自己的身份投票,则在数据库中抛出一条记录,说明用户已经投票。对于匿名选民,您仅限于使用 cookie、本地存储等。

于 2011-05-25T01:24:17.350 回答
0

可以使用evercookie代替 cookie ,这更难(但仍然可能)绕过。

evercookie 是一个可用的 javascript API,可在浏览器中生成极其持久的 cookie。它的目标是即使在他们删除了标准 cookie、Flash cookie(本地共享对象或 LSO)等之后也能识别客户端。

于 2011-05-25T01:28:07.950 回答