如何记住匿名投票
Posted
技术标签:
【中文标题】如何记住匿名投票【英文标题】:How to remember an anonymous vote 【发布时间】:2011-07-29 05:17:45 【问题描述】:为匿名投票实现“记忆”或持久性的最佳方式是什么?前几天我在浏览某个网站(不幸的是我忘记了 URL),我可以快速“点赞”或“点赞”某个项目。所以我对几个项目进行了投票。然后我关闭了所有浏览器实例,删除了所有浏览器历史记录和文件。我回到网站对一些相同的项目进行投票,但它“知道”我已经投票了。所以我想知道实现这一目标的最佳方法是什么
我读过关于evercookies 的文章,但不知何故,它们似乎不是对待用户的好方法。我不想那样做。还是 evercookies 是实现此目的的唯一方法?
如果 evercookies 不是这背后的机制,那么我能想到的唯一方法就是记住客户端的 IP + 用户代理 + 其他东西。但什么是“别的东西”?
有什么想法吗?
问候, 阿吉尔
【问题讨论】:
我在问一个问题,因为显然我已经用尽了研究并且有人对此投了反对票。在这种情况下,请向我展示有关此问题的良好指示。事实上,我敢说你。我到处找零碎的东西,但没有一篇文章能完全解释这一点。 【参考方案1】:网站可能会结合使用以下方法来尝试识别在线投票等表单的泛滥或滥用情况。没有一种方法是绝对可靠的;事实上,大多数都是微不足道的。
识别同一个人:
设置 cookie(如会话 cookie) 比较 IP 地址 一种具有 cookie 的启发式方法,并在没有 cookie 时比较部分 IP 地址(/24 子网)和/或用户代理作为备份。防止其他类型的滥用:
洪水控制:不允许来自某个 IP 子集或所有人的每分钟投票数超过一定数量。 垃圾邮件检测:尝试通过签名检测机器人(例如格式错误的用户代理或接受标头等)让用户跳跃:
验证码/机器人检测 让用户通过电子邮件确认投票 让用户注册,提供唯一的邮箱,确认邮箱对于每一项措施,都有一个相等且相反的对策。例如,滥用者可能会忽略 cookie、改变他的用户代理或使用匿名服务来为每个请求改变他的 IP 地址。他可能会使用多个带有一次性电子邮件地址的帐户进行注册,甚至有办法尝试击败 CAPTCHA(例如,为其他网站上的用户重播 CAPTCHA)。
请注意,对于决心破坏的人来说,evercookie 对您的作用并不比 cookie 多。例如,它们不会影响机器人。
我个人不喜欢使用让用户跳槽的障碍。希望我已经证明,即使您需要注册,也不会像使用良好的防洪算法那样防范滥用者,因为获得多个一次性电子邮件地址是微不足道的。
【讨论】:
感谢您的回复。这正是我一直在寻找的。如果我的问题不够具体,我深表歉意。我想知道是否有一个数学上确定的解决方案。您刚刚确认没有。这与我看待事物的方式不谋而合。无论人们多么努力地保护系统,仍然有办法破坏它。就我而言,我不想对验证码和电子邮件发疯,因为这肯定会关闭我网站的用户。 另一方面,我也不想太输。基本上,我不希望有人编写一个投票的机器人,然后按 F5 并再次投票。那将是另一个极端。所以我现在的计划是使用 cookie、IP + UserAgent 的某种组合,并限制在给定时间间隔内来自给定 IP + 用户代理组合的一定数量的投票。【参考方案2】:我有你的问题,有很多方法可以识别用户点击或访问。
Cookies
您可以在用户机器中存储各种 cookie,例如
超级饼干 Flash Cookies Silverlight 饼干 僵尸饼干 第一方 cookie 第三方 cookie
僵尸 cookie 类似于 Flash cookie。如果您不想使用所有这些,您可以简单地使用 SuperCookies。它的用法更简单,你可以在 github 中找到它。但问题是大多数用户会禁用 cookie。所以你甚至可以使用下面的方法给出我们将根据浏览器、字体等生成的哈希键。
webGL 指纹识别 画布指纹 音频指纹
Panopticlick 表示 84 个中的 1 个将具有相似的画布哈希,而 983 个中的 1 个将具有相似的 webGL。
您可以查看网站user tracker。这类网站也采用一些方法来识别喜欢的用户
获取客户端IP 位置 浏览器指纹
我们可以通过webRTC获取客户端的IP。
我们还有一些网站提供免费的 api 来获取位置,例如ipgeolocation。您可以将 webGL、canvas 哈希键与您的位置相匹配。
最后是浏览器指纹识别,它可以帮助大多数公司和网站识别用户。
【讨论】:
以上是关于如何记住匿名投票的主要内容,如果未能解决你的问题,请参考以下文章