首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用SimpleDB实现防欺诈投票系统

用SimpleDB实现防欺诈投票系统
EN

Stack Overflow用户
提问于 2011-05-23 06:42:32
回答 1查看 335关注 0票数 0

我想实现一个投票系统,所有数据都存储在亚马逊SimpleDB中。前端也在亚马逊EC2上运行。我主要关心的是服务的成本。

投票系统需要防欺诈。也就是说,每个访问者在每次选举中只允许一次投票,并且没有用户帐户。我曾考虑为每一次投票存储一个SimpleDB项目以及它所来自的ip地址。然后,如果没有该ip/选举对的条目,我将只插入新的投票。

然而,就存储和处理而言,这听起来非常昂贵。我将不得不检索所有的选票来统计他们,以显示最新的结果。

我考虑过的另一个选择是存储投票,只是偶尔对它们进行汇总并缓存结果。但这仍然需要我存储所有的选票。

你的建议是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-23 16:09:13

让我们首先解决您主要关心的成本问题。让我们假设您的系统中有1,000,000张选票。每个投票由一个simpledb项表示,每个项包含三个属性,一个时间戳、实际投票和一个标识用户的唯一值(稍后我将介绍这一部分)。

现在,simpledb overview page为我们提供了一种计算项目实际存储大小的简单方法。

亚马逊SimpleDB通过将您上传的数据的原始字节大小加上每个项目、属性名称和属性值对的45字节开销来衡量您的计费数据的大小。

让我们计算一下,以防你决定包含更多的数据,假设每一项/投票将花费你300字节的存储空间。那么您的数据的总存储大小将是~286mb。完全在免费级别的限制内。还有插入物品的成本,但这可能是可以忽略不计的。计票是有成本的,但正如您已经建议的那样,缓存可以帮助显着减轻这一问题。

我把这些数字放入优秀的Amazon Simple Monthly Calculator服务中,得到一个大概的数字,1 1GB的存储空间,1M的puts,250k的get和100k的选择,我得到了大约4美元/月。现在,根据我的经验,很难预先估计使用情况,所以你必须在进行的过程中密切关注我们的使用情况。amazon提供的使用情况报告包含有关请求的详细信息,您可以使用这些信息来查看应用程序的模拟真实使用情况的效果。

欺诈证明

现在,至于防欺诈部分。对我来说,评估你所寻找的防欺诈水平有点困难,但无论如何,如果没有用户账户,你就不会有一个防欺诈的投票系统。即使你有账户,你也必须非常小心地避免XSSCSRF,这样恶意用户就不会利用其他用户和他们的投票。

限制每个IP的投票有许多问题。

  • 一些ISP:s积极地为他们的客户重新使用IP地址
  • 使用在激流时代蓬勃发展的大量匿名工具(代理,vpn:s)来伪造你的IP太容易了。也可以使用免费的“合法”工具,如TOR
  • 许多大型组织/政府/学校将通过代理或使用NAT发送其用户的所有流量,这意味着每个组织只能有一个用户能够投票。

甚至有可能用户在每个请求上都有不同的ip地址(!)

说到粘性会话,我们惊讶地发现,很少有用户的IP地址会随着请求的不同而发生根本的变化。

https://blog.stackoverflow.com/2009/07/

如果你真的想创建一个可靠的在线投票系统,你必须检查用户的账户,并进行一些真实的身份验证(例如,通过邮寄的方式将验证码发送到用户的注册地址)。

最后,但不是最不重要的。无论您的欺诈预防机制的软化程度如何,您都必须对您的数据执行常规审计,以便在早期发现意外的欺诈场景。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6091313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档