写点什么

花 40 多万开发的 App 扰乱了一场大选,几乎毁了一家公司

  • 2020-02-13
  • 本文字数:2374 字

    阅读完需:约 8 分钟

花40多万开发的App扰乱了一场大选,几乎毁了一家公司

事件回溯

近日,美国爱荷华州召开了民主党总统候选人初选大会。过往,都是用纸质投票的方式进行,这次希望采用一款名为“IowaReporterApp”的电子计票应用程序,该程序最初被认为可在投票 2 小时后快速公布结果。但是,这款应用程序在使用时发生故障,导致大规模混乱,直到第二天还未能公布结果。


该应用程序由 Shadow 公司开发,前后花费了四个月时间,成本为 63182 美元(约合人民币 44 万元),基于 React Native 构建。这家公司还曾替政府建过网站、设计数字营销活动或打造各种工具。据专家称,IowaReporterApp 应该有如下基本功能:


  • 当选区主席用选区识别码(PIN 码)经过双重认证登陆到 App 后,就会浏览到关于如何进行初选的基本信息。

  • 选区主席需要输入参与初选的总人数;

  • 选区主席需要分别输入第一轮和第二轮初选投票总数。App 会计算出每个候选人应该获得多少代表名额。随后,App 会计算出每个候选人应该获得多少选票。


据外媒报道,Shadow 在 1 月中旬就曾邀请人员测试过该程序,但必须通过 Android 的程序测试平台 TestFairy 来下载 App,一家媒体在两支 Android 手机上下载及安装了 IowaReporterApp,但只有一支手机上的可正常启动。Shadow 也在苹果的测试平台 TestFlight 上部署了该程序,但很多人反馈下载或安装该程序都很困难。



有趣的是,美国公共广播电台(NPR)曾质疑通过全新的 App 进行选举的方式可能会暴露公众隐私,当时民主党不愿揭露 IowaReporterApp 的安全机制设计,担心公布相关细节反而会让黑客有机可趁。如今看来,IowaReporterApp 在很多方面的表现都很差。

问题出在哪?

公司体量小、缺乏经验

这不是第一次将移动应用程序用于选举中,以前之所以没有引发太多关注,是因为一切都运行良好,实际上,2016 年的选举中就曾使用过具有类似功能的移动应用程序。


2016 年为选举提供 App 服务的公司联合创始人兼联合 CEO Rodney Guzman 说道:


“当我目睹这一切发生时,简直像做了一场噩梦。这个工作如果由我们来完成就不会发生这种事。”


2016 年,这项工作是由微软外包商 InterKnowlogy 公司完成的,InterKnowlogy 公司基于微软技术为选举构建 App 和其他数字化基础设施。InterKnowlogy 在应用程序开发方面拥有近二十年的经验。相比之下,2020 年初选的应用程序是由一家名不见经传的新公司 Shadow 打造的,该公司以前从未接触过如此大规模的需求。

构建过于匆忙

2016 年 App 和 2020 年 App 其实很相似,虽然功能并不复杂,但同一个 App 的多个版本需要服务于不同的设备和系统。更重要的是,这些版本在首次使用时就要表现出完美的性能,没有时间去做更新和改进。


由于 2020 年 App 供应商不像之前的团队那么经验丰富,并且有足够的资金和人力支持。据了解,2016 年的 App 构建筹备了约一年时间,前三个月进行产品设计,与需求方会面,对 App 的可用性不断研磨,而这三个月初期设计阶段差不多赶上了 Shadow 整个产品构建周期。



对于外界质疑的该款 App 到底花了多长时间来构建这一问题,Shadow 首席执行官 Gerard Niemira 表示,“我们从 8 月开始接洽,并自那时起开始收集需求并着手设计,因此 App 的构建周期基本上是从 2019 年 8 月到 12 月。因为收集需求耗费了比较长的时间,所以直到交付期临近时才有了最终版本。”


根据国家记录显示,该 App 是在几个月内构建的,成本为 63182 美元,对于应用在如此重要场合的一款 App 来说,四个多月的构建周期真的不算长。


“我作为一名工程师,听到这种消息感觉有点疯狂,”InterKnowlogy 软件工程师 Michael Gramley 说道。“我们不能在两三个月内建立一个稳定的平台。因为我们需要花费大量时间来测试所有内容。如果真有人这么做了,那最终失败的可能性非常大。”

缺乏训练和测试

在故障发生后,请来了 6 位网络安全和应用开发专家来对 App 进行分析。


Android 资深开发人员 Kasra Rahjerdi 表示,该应用程序包含默认的 React Native 元数据,并且“只在原有的框架上添加了自己的代码”。换句话说,该 App 就像一个不会编码的人机械地按照教程完成构建。Rahjerdi 表示,他们从初级入门包开始操作,只是在入门包上添加了一些东西。我甚至有一种感觉,觉得这个就像是通过谷歌搜索操作说明,然后一步步根据操作说明构建的 App。


Shadow 首席执行官 Gerard Niemira 在接受媒体采访时表示,该应用程序设计很简单。他称这种 App 不需要过于复杂,只需要帮助选区主席做数学运算,并以最快的速度获得票选结果,这是一个相对简单的 App,原理就像计算器一样。此款 App 是可靠的,来自该 App 上的的数据是可靠的,在 App 上完成的数学运算也是可靠的,我们在 App 上收集到的所有结果都是正确的,并且已经得到验证。



Gerard Niemira 的言外之意是:


数据和结果都是正确的,只是,速度慢了不少。


然,这款 app 的设计初衷,恰恰是为了提高投票结果的统计效率。


除了处理数据的速度不尽如人意外,在被问及 App 的安全性测试时,Niemira 解释道,我无法透露进行安全性测试公司的名字,但我们确实进行了独立审核。该审核时某些配置项的确出现了问题,但是我们已经在初选前将这些配置项进行了很好地修复。

最终结果

最后,该州在一份声明中称:选举数据和结果已经从 App 中导出,并且正在通过纸质记录进行核实。主席 Tom Perez 表示,该应用程序不会在任何初选或预审中再次使用。目前,该 App 的整个后端已经关闭,无法通过它或从公司服务器访问任何信息。App 出现故障次日,美国国土安全部表示愿意帮助分析该款 App 的安全性,但该提议被拒绝。

结语

63182 美元的生意哪怕对于一个体量如 Shadow 的公司来说也不算是笔大买卖。但是,这笔生意的背后却潜藏着巨大的利润空间和机遇。Shadow 公司如果能为这次合作做好充足的准备,引起足够的重视,那么未来的发展将不可小觑。


今日讨论:


广大程序员,你们对这件事情有何想法?花费 40 万元,四个月的时间,构建这样一款 APP,难度系数高吗?


2020-02-13 09:3220289

评论 7 条评论

发布
用户头像
这是reactnative被黑的最惨的一次。
2020-02-15 21:10
回复
用户头像
顶一下
2020-02-14 20:26
回复
用户头像
典型的想花小钱,办大事,结果一地鸡毛。
2020-02-14 14:23
回复
用户头像
每月10万,一个设计2w,一个测试1w,一个主程3w,一个前端2w,一个产品2w
2020-02-13 14:38
回复
外包给中国(或者印度)团队应该还是够的,不然换成美刀就只能请一个全栈工程师开发4个月了(每月税前1.5w)
2020-02-13 14:40
回复
给国内开发前肯定够,程序开发并不复杂,并发考虑一下,1+1+1,3个人2月内搞定。
2020-02-13 18:16
回复
产品,设计和测试不用全时间投入,产品,设计主要在前期,测试在后期.. 所以投入最多20w,人家还得留点利润那..
2020-02-14 16:27
回复
没有更多了
发现更多内容

3D模型如何添加金属贴图?

3D建模设计

材质 纹理 金属贴图

面向Three.js开发者的3D自动纹理化开发包

3D建模设计

AI 3D模型 three.js AI自动纹理

第18期 | GPTSecurity周报

云起无垠

数字化转型如何落地?

优秀

数字化转型 数字化业务转型

企业内部外网向内网传输文件如何实现高效安全?

镭速

内外网数据交换 内部外网隔离

Java模块化应用实践之精简JRE | 京东云技术团队

京东科技开发者

Java jre 企业号10月PK榜 Java21

mybatis plus很好,但是我被它坑了!

越长大越悲伤

Java MySQL mybatis Mybatis Plus

浅析Redis大Key | 京东云技术团队

京东科技开发者

redis key redis 底层原理 企业号10月PK榜

专业好用的多媒体播放器Infuse 最新版中文

胖墩儿不胖y

Mac软件 多媒体播放器

可视化(Visual) SQL初探

数新网络官方账号

数据库 sql #数据库

全球业务 | 用友废钢智能判级系统在日本成功通过验收

用友BIP

废钢智能判级

记一次老商家端应用内存突然飚高原因分析 | 京东物流技术团队

京东科技开发者

企业号10月PK榜 fullGC 内存飙升

中移链浏览器简介

BSN研习社

后期云端制作:激发影视行业创新力的新时代

Finovy Cloud

影视制作 云渲染 后期制作

用友BIP,IoT在光伏行业的应用

用友BIP

物联网 智能制造

@所有人,2023开放原子开发者大会议题征集火热进行中!

开放原子开源基金会

开源 开发者大会

App 支付报错“商家订单参数异常,请重新发起付款“排查流程

盐焗代码虾

支付宝 支付宝报错 排查思路 APP支付

代币开发工具:从 Truffle 到 Hardhat

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

涛思数据与胜软科技达成战略合作,共同赋能石油行业数字化转型

TDengine

tdengine 时序数据库

如何为模型添加光照效果?

3D建模设计

材质 纹理 光照贴图

EVE-NG的环境导入IOL组件

小魏写代码

写出一个复杂的SQL步骤

程序员万金游

#数据库 #java #Mysql #SQL

40 + 专家齐聚共谋数据未来,StarRocks Summit 2023 议程公布!更多精彩议题等你探索...

StarRocks

数据库 OLAP StarRocks

赣州有资质等保测评机构有几家?咨询电话多少?

行云管家

等保 等级保护 等保测评 赣州

浅谈搜索展现层场景化技术-tanGo实践

百度Geek说

企业号10月PK榜 搜索场景化 展现层技术 阿拉丁

逻辑漏洞挖掘之CSRF漏洞原理分析及实战演练 | 京东物流技术团队

京东科技开发者

CSRF 安全测试 漏洞分析 逻辑漏洞 企业号10月PK榜

花40多万开发的App扰乱了一场大选,几乎毁了一家公司_语言 & 开发_李冬梅_InfoQ精选文章