防止在线选民欺诈

信息安全 验证 ip欺骗 欺诈罪 用户管理
2021-08-22 17:46:53

作为促销活动的一部分,我的公司希望推出一个网站,要求我们产品的用户(和潜在用户)注册并投票支持某些选择。根据它的成功程度,这可能会成为常规功能。既然提议的奖品不会是微不足道的,我们自然会担心选民欺诈。我们如何检测代理、Tor 和各种其他方法的使用,这些方法可能被不道德的用户用来玩弄系统?例如,https://check.torproject.org是如何工作的?有没有我们可以使用的现成脚本,不仅适用于 Tor,而且一般都可以使用?

我看到Stack Exchange过去也举办过基于在线投票的比赛,所以我希望在这里得到一些好的答案。

谢谢,

塞缪尔

4个回答

投票系统被人们“玩弄”了比通常允许的投票次数更多的人(例如多次投票)。防止这种情况的唯一方法是有一种方法来识别选民并防止多票。

可靠的方法需要对用户进行身份验证,例如使用密码,但这有两个缺点,即 1. 用户不喜欢它,以及 2. 这并不能真正解决问题,而是将其移至先前的“注册阶段”。

不可靠的方法是通过跟踪 IP 地址来启发式地检测欺诈行为(但这对于动态 IP 地址会失败——用户可以更改他的 IP,这或多或少会自动发生在许多 ISP 和NAT中——几个不同的用户共享相同的IP)或其他方法。只需在用户浏览器中发送“已投票”cookie 即可阻止基本的、低技术的骗子;还有更彻底的方法,但所有这些都可以被精通技术的攻击者规避。Tor是一种处理匿名性的工具,这是一个密切相关的主题,它表明你正在努力打一场失败的战斗。

StatckExchange 本身也面临同样的问题,它称之为sock puppets他们最终采取了一种轻松的态度,使用(未发布的)脚本来检测最公然的游戏尝试,而大多忽略了其余的。

限制每个 IP 一票,会严重限制 B2B 参与。大多数企业都在代理或 NAT 后面,它将整个组织呈现为一小部分 IP。

鉴于其中涉及真金白银和真正的奖品,将帐户与难以大规模生产的替代身份相关联可以真正限制滥用。示例可能包括您的工作电子邮件地址或您的公司电话号码。

当他们的名字从比赛中抽出时,很容易取消比赛资格,或者查看注册域以发现重复使用其公司地址的人,例如 joe+123@example.com、joe+124@example。 com... 另外一个条款“将通过电话通知竞赛获胜者”,这意味着填充选票不会为您赢得任何奖品。

注册表单上的验证码可以防止自动注册大量涌入您的数据库,但您对虚假注册的真正保护是检查合理的电子邮件地址(验证地址并禁止诸如 mailinator 之类的东西)以及不鼓励虚假注册没有赢得任何奖品。

最后......虽然对这种系统存在理论上的攻击,但实际上有人将不得不真的不喜欢你如此顽固。

您可以要求选民拥有一个在投票开始之前创建的旧 facebook(或 twitter)帐户,这将使某人无法仅仅为了投票而注册,并且有人可能会在这些帐户上分配帐户社交网站很小,可能可以通过其他方法处理,例如监控 ip 地址或 cookie 和检查代理

有各种各样的 php 脚本可以检查使用代理的用户,但您可能想用谷歌搜索它们或在 stackoverflow 上询问。

为什么代理和 Tor 是用户不道德的标志?Tor 表明某人有隐私意识,或居住在限制访问信息的国家/地区。代理是某人正在从业务网络登录的标志,而不是他们没有做好事的标志。

我假设您正试图阻止一个人使用虚构身份创建多个帐户来扭曲结果。实际上,没有办法阻止这种情况——任何有足够时间和倾向的人都可以在你不了解它的情况下做到这一点。这是互联网的重大问题之一,如果你解决了它,你将赚到数十亿美元。

有一些方法可以让人们设置多个帐户变得更加困难,主要是通过增加所需的工作量:

  1. 不允许 API 调用创建帐户,让每个人都必须在页面上手动进行。
  2. 放入验证码并使用其他技术来确保创建帐户的是人。要求解决一个简单的数学问题,将其放在图形而不是文本中
  3. 验证所有电子邮件地址,并让他们每 90 天更改一次密码
  4. 检查密码哈希以找到相同的密码,如果您有 20 个帐户使用相同的密码,那么很有可能是一个懒惰的人试图与您博弈。您当然不会知道密码是什么,但它为您提供了一个起点。