7

我正在创建一个 Web 应用程序,用户将通过单击竖起大拇指或竖起大拇指来为某些候选人投票,而这些用户在该站点上没有任何帐户。

最好的技术是什么?是否有必要使用验证码来更好地防止垃圾邮件?

投票数预计将达到数百万,而且这个主题不是很关键,只要我得到 95% 的准确率就可以了。谢谢。

4

4 回答 4

6

您可以结合使用这两种方法:

  • 添加cookie以防止来自同一台机器的多个投票
  • 记录 IP 地址并防止从同一地址多次投票(例如,同一小时 5 次)。

这将使多人可以从同一个网络投票,但仍然可以防止过度作弊。

您还可以通过添加一些带有必须包含在投票中的令牌的隐藏表单字段来增加构建投票机器人的难度,和/或使用 Ajax 进行投票。我知道无论如何构建一个机器人相对容易,但大多数作弊者并不那么聪明。

于 2012-01-22T16:32:06.893 回答
1

Cookie会话 ID会有所帮助,尽管当浏览器关闭时两者都可能丢失(如果用户启用了删除它们)。不过,它们会给你一定程度的准确性(例如,懒惰的选民不会费心关闭和重新打开他们的浏览器)。

使用IP 地址也可以,但正如@Michael Dillon 所说,使用同一 IP 地址(同一路由器)的人将无法投票。

于 2012-01-22T16:31:37.707 回答
1

您有几个选项,您可以使用其中的部分或全部。

您可以记录 IP,然后检查 IP,但这并不表示特定的人只是一台计算机,有时不仅仅是一台计算机。

您也可以将 cookie 写入用户的浏览器,但用户可以使用不同的浏览器、机器等。

在用户的会话中,您可以创建一个会话变量,但如果您预计流量非常高,这可能不是最佳选择,并且也只能防止在同一会话中重新投票。

如果您正在考虑使用验证码,您也可以要求用户提供一个电子邮件地址,然后您就可以确保每个电子邮件地址至少有一票。但是,即使那样,您也不能保证有效的电子邮件地址。

于 2012-01-22T16:31:50.163 回答
1

您可以在他们想投票时询问他们的电话号码,然后将一次性密码发送给他们,并将其用作验证。有些我也从其他号码投票,但我认为这是最准确的方式。

于 2020-06-09T12:03:46.773 回答