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

2023-11-27

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

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

问题:

  • 这对于使用 javascript 来说是不是从一开始就存在根本性的缺陷?我看到编写仅更改值和重新投票的脚本的巨大潜力。 (也许我可以通过 ajax 调用验证前端数据是否正确以及用户是否存在?)
  • 我的应用程序获得成功的机会非常难得,这是否会导致前端计​​算过多?

Edit:抱歉,我忽略了一个关键事实,即我确实有一个更大的后端系统(WordPress)来处理身份验证。我正在开发的应用程序很大程度上独立于 WordPress。我只是出于过滤目的提取一些用户信息。我选择 Firebase 作为存储解决方案是因为它的实时功能。

我希望通过以下几种方法来打击选民欺诈:

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

当然可以在客户端安全地执行此操作。但是,正如其他人指出的那样,它确实需要用户登录。如果您已经在使用 Firebase,这实际上很容易使用FirebaseAuth客户端.

然后你可以将其与Firebase 安全规则强制任何登录用户只能投票一次。查看安全页面上的截屏视频以获取示例!

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

{
  "rules": {
    "users:" {
      "$userid": {
        "voted_on": {
          "$articleid": {
            ".write": "!data.exists()"
          }
        }
      }
    }
  }
}

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个简单的投票系统:如何防止重复投票[重复] 的相关文章

随机推荐

  • NSPredicate 未执行

    这很有趣 在我的应用程序中 我在数据库中创建了数千个条目 在另一个线程中 我使用 MagicalRecord 一切似乎都工作正常 从背景 前景 上下文的角度来看 当我在主线程中尝试获取 刚刚插入 的数据时 我发现了以下行为 NSArray
  • 从 edittext 中选定的文本中删除样式

    我的应用程序应该允许用户在 Edittext 中设置输入或选定文本的样式 其中一些样式有下划线 删除线 粗体和斜体 它们很容易添加 但我不知道如何将它们移除 and 我如何确定该样式是否已添加到选定的文本 添加样式的代码 Spannable
  • 内置赋值运算符的返回类型是什么?

    我刚刚开始 C 我对赋值和取消引用运算符的返回类型有点困惑 我正在关注 C Primer 这本书 在各种场合 作者都说赋值运算符的返回类型是对左手操作数类型的引用 但后来 他说返回类型是左手操作数的类型 我已经提到了 C 11 Standa
  • PHP-获取数组值的键名

    我有一个数组如下 function example some stuff here that pushes items with dynamically created key strings into an array return ar
  • 最佳实践:Android 上的布局(编程与 XML)

    这个问题已经困扰我一段时间了 我已经在 Android 平台上开发了几个应用程序 并且总是发现自己求助于 Java 代码来构建布局 在专业的开发环境中 这是可以接受的吗 或者 XML 文件应该成为首选方法 我通常发现 XML 是一种更乏味的
  • 如何在同一个 Ruby Rails 项目中配置 MongoMapper 和 ActiveRecord

    我有一个现有的生产 Ruby Rails 应用程序 我希望在时间允许的情况下将其迁移到 MongoDB 因为不能一次性全部重写 我希望能够在我接触到旧课程时就弃用它们 我打算使用 MongoMapper 我找不到任何人解释如何设置数据库配置
  • com.firebase.client.FirebaseException:无法解析类为 CLASS_NAME android 的节点

    我在使用 Firebase 更新现有值时遇到以下异常updateChildren方法 com firebase client FirebaseException Failed to parse node with class class c
  • 如何开始使用 Java 构建 Web 应用程序? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想开始使用 java 进行 Web 开发 不知道如何开始 该学什么 或者什么是最好学习和使用的 Web 框架 帮帮我 我假设您只是 Web 应用程序的新手 而不是 Java 本
  • 超类中的私有方法可以在子类中重写吗?

    Java中私有方法可以被重写吗 如果不是 那么下面的代码如何工作 class Base private void func System out println In Base Class func method class Derived
  • 如何解决UITableView滚动缓慢的问题

    我是第一次在真实设备上进行测试 在修复了一些明显的性能问题后 我陷入了如何平滑滚动的困境 这就是我所做的 数据在sqlite中 我有一个带有标题的小数组 我在每个标头数组中都有来自数据库的 Id 列表 e g 标头 A Id 1 2 标头
  • 我可以替换 Java 正则表达式中的组吗?

    我有这段代码 我想知道是否可以仅替换 Java 正则表达式中的组 而不是所有模式 代码 Pattern p Pattern compile d d String input 6 example input 4 Matcher m p mat
  • 将 JAX-RS bean 验证错误消息绑定到视图

    我们可以使用 bean 验证轻松验证 JAX RS 资源类字段或方法参数 如下所示 Size min 18 max 80 message 年龄必须在 min 和 max 之间 String Age 将错误消息绑定到 JSP 页面的最简单方法
  • GPS 是否已激活 - Flutter

    有没有办法在 Flutter 中找出 GPS 是激活还是停用 我使用插件location然而 我只得到位置 而不是 GPS 的状态 更新 地理定位器8 0 1 bool isLocationEnabled await Geolocator
  • API Youtube,如何获得喜欢和不喜欢

    在一个网站上 我使用 API Youtube 和 ZendGdata 来检索用户的所有视频 并使用视频及其信息创建网页 现在我需要在我的网站上添加一个喜欢或不喜欢视频的系统 并且我需要检索喜欢和不喜欢的数量 是的 这里有2个问题 所以 我检
  • selectonemenu 出现错误 java.lang.String 无法转换为 javax.faces.model.SelectItem

    我想填写一个选择菜单 但总是出现此错误 java lang String cannot be cast to javax faces model SelectItem 这是代码 public class ToolsJIRA implemen
  • 仅将 ASP.NET MVC 应用程序管理站点锁定到 LocalHost

    我有一个 ASP NET MVC 网站 我想向其中添加一个小型管理页面 我遇到的问题是 我将全部部署它 但 SSL 不可用 我同意要求管理员远程桌面并使用本地浏览器来执行管理 这可以做到吗 我基本上希望得到与
  • 创建 SQLite 数据库和表

    在 C 应用程序代码中 我想创建一个或多个 SQLite 数据库并与之交互 如何初始化一个新的 SQLite 数据库文件并打开它进行读写 数据库创建完成后 如何执行DDL语句创建表 下一个链接将为您带来一个很棒的教程 这对我帮助很大 如何在
  • Meteor.js 中的运营转型?

    Meteor js 支持操作转换吗 我正在开发一个与 Etherpad 相关的项目 我想使用 Meteor js 我认为它非常适合此类项目 如果我想使其具有可扩展性 那么运营转型对于我的项目来说非常重要 我目前的知识表明 流星不支持开箱即用
  • 黑莓推送通知实施

    如何为黑莓应用程序实现推送通知 我听说为此我需要购买一台 Blackberry Enterprise Server 每年花费 1400 美元 这是真的 实施推送通知的良好起点在哪里 我对 iPhone 推送开发有经验 但找不到黑莓的同等功能
  • 一个简单的投票系统:如何防止重复投票[重复]

    这个问题在这里已经有答案了 我正在构建一个带有投票选项的简单网络应用程序 我计划为投票最多的人提供现金奖励 所以我想要一个相对安全的系统 我有几个关于受孕的问题 我知道我的帖子与其他一些帖子类似 但似乎没有一个帖子足够具体到该平台 让我放心