一个简单的投票系统:如何防止重复投票

Fro*_*Dev 10 javascript jquery firebase

我正在构建一个带有向上投票选项的简单Web应用程序.我计划为最多投票的人提供现金奖励,所以我想要一个相对安全的系统.我有几个关于受孕的问题.我知道我的帖子与其他几个帖子类似,但似乎没有一个特定的平台让我放心.

我的网络应用程序正在使用javascript和firebase来加载所有正在投票的对象.我将强制用户登录并存储IP地址,用户ID等.

问题:

  • 这是从一开始使用javascript的根本缺陷吗?我看到编写一个只改变价值和重新投票的脚本的巨大潜力.(也许我可以验证前端数据是否正确以及用户是否存在ajax调用?)
  • 随着我的应用程序成功的机会是否会成为太多的前端计算?

编辑: 对不起,但我遗漏了一个关键事实,即我有一个更大的后端系统(WordPress)来处理身份验证.我正在开发的应用程序基本上独立于wordpress.我只是为了过滤目的而提取一些用户信息.我选择Firebase作为其实时功能的存储解决方案.

我希望用几种方法来打击选民欺诈:

  • 赠送的奖励为每月100美元.
  • 登录不是妥协,我实际上希望用户注册并用人眼验证有资格投票.其他人可以见证比赛,但不能投票.
  • 服务器端检查.如果我的应用程序受欢迎,我可以编写脚本来监控违规行为的投票模式吗?如果有人滥用系统,我就会失去胜利的能力.

Ana*_*ant 8

当然可以在客户端安全地执行此操作.但是,正如其他人所指出的,它确实需要用户登录.如果你已经在使用火力地堡,这其实是很容易使用实施FirebaseAuthClient.

然后,您可以将此与Firebase安全规则结合使用,以强制任何已登录的用户只能进行一次upvote.查看安全页面上的截屏视频,以获取示例!

您的安全规则可能如下所示:

{
  "rules": {
    "users:" {
      "$userid": {
        "voted_on": {
          "$articleid": {
            ".write": "!data.exists()"
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这可以确保您可以将任何给定值写入/ users/anant/voted_on/article1 一次.您可以添加.validate规则以确保该值是布尔值(或其他内容).