公开投票和避免多次投票:使用 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?的主要内容,如果未能解决你的问题,请参考以下文章
极术社区最受欢迎技术公开课投票啦!参与投票赢取好礼,一键观看所有公开课