公开投票和避免多次投票:使用 cookie 还是 IP?

Posted

技术标签:

【中文标题】公开投票和避免多次投票:使用 cookie 还是 IP?【英文标题】:Public votes and avoiding mutliple vote: using cookies or IP? 【发布时间】:2011-09-01 09:24:49 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

解决方案分为三个部分:

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

只使用 IP 是不合适的,因为它会使很多人退出投票系统。

【讨论】:

【参考方案2】:

使用 IP。

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

【讨论】:

【参考方案3】:

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

【讨论】:

您基本上可以删除一整群使用代理的人。他们都来自同一个ip。还是我错了? 这就是IP限制的缺点。 @John,如果您使用 IP/cookie 的组合来创建 用户,则不会。【参考方案4】:

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

【讨论】:

【参考方案5】:

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

evercookie 是一个 javascript API 可产生极 浏览器中的持久性 cookie。它的 目标是识别客户,甚至 在他们删除标准之后 cookie、Flash cookie(本地共享 对象或 LSO)等。

【讨论】:

我永远不会在我的网站上使用它,因为我尊重我的访问者。 我也不是,但它是 OP 可以使用的选项。此外,随着对 evercookie 的认识不断传播,希望有更多的选择可以轻松删除它们。 但是像 facebook 这样的大网站并不关心你的隐私

以上是关于公开投票和避免多次投票:使用 cookie 还是 IP?的主要内容,如果未能解决你的问题,请参考以下文章

视频投票之每日一票-jquery.cookie.js篇

PHP - 我希望用户不能多次投票

极术社区最受欢迎技术公开课投票啦!参与投票赢取好礼,一键观看所有公开课

PHP投票实现24小时间隔投票

关于利用JS cookies 限制反复投票的问题,高分求助 140

Bluemix云端数据库服务使用示例———PHP投票程序