我正在创建一个网络应用,用户将通过点击大拇指或大拇指为一些候选人投票,这些用户在网站上没有任何账户。
最好的技术是什么?是否有必要使用验证码来更多地防止垃圾邮件?
投票数预计有几百万,题目不是很关键,只要我的准确率达到95%就可以了。谢谢。
你可以结合这两种方法。
这将使得多人在同一网络中投票成为可能,但仍然可以防止过度作弊。
你也可以通过增加一些隐藏的表单字段,投票时必须包含一个令牌,或者使用Ajax来进行投票,来增加投票机器人的难度。我知道建立一个机器人相对来说比较容易,但大多数作弊者并没有那么聪明。
Cookies 和 Session Ids 会有帮助,尽管当浏览器关闭时,两者都会丢失(如果用户启用了删除它们)。不过,它们还是会给你提供一定程度的准确性(例如,懒惰的投票者不会去关闭和重新打开他们的浏览器)。
使用 IP地址 也可以,但正如 @Michael Dillon 所说,同一 IP 地址(同一路由器)的人将无法投票。
你有几个选项,其中一些或全部可以使用。
你可以记录IP,然后对照IP进行检查,但这样就不能说明一个具体的人只是一台电脑,有时也不只是一台电脑。
你也可以在用户的浏览器上写一个cookie,但是用户可以使用不同的浏览器、机器等。
在用户的会话中,你可以创建一个会话变量,尽管如果你期待非常高的流量,这可能不是最好的选择,而且也只能防止在同一会话中重新投票。
如果你考虑使用验证码,你可以要求用户提供一个电子邮件地址,这样你就可以保证每个电子邮件地址至少有一次投票。然而,即使这样你也不能保证有效的电子邮件地址。
你可以问他们的电话号码,当他们想投票,并向他们发送一次密码,并使用该作为验证.有些我的也从另一个号码投票,但我认为这是最准确的方式。