5

我正在编写一个需要用户输入他们的手机号码的新网站,我面临的问题是我需要确保用户实际上是所有者(或者在这种情况下,可以访问)手机号码。

我想出的解决方案是,在提交号码后,我向他们发送带有令牌的短信,并要求用户在我的网站上输入令牌,就像谷歌日历一样。但是我的预算很有限,我需要确保用户 A 不会提交 100,000 个手机号码,如果发生这种情况,我很快就会停业,因为每发送一条 SMS 都要花费我大约 0.10 美元。

到目前为止,我提出了以下解决方案:

  • 使用验证码(让一些用户远离,并且仍然容易受到手动注册的影响)
  • 限制给定 IP 地址请求的令牌数量(动态 IP、代理等)
  • 限制为给定手机号码发送的令牌数量(用户可以为所有可用号码请求令牌,当真实用户尝试请求合法令牌时,他的号码将被阻止)

这些解决方案都不是完美的,你建议我如何解决这个问题?

4

5 回答 5

6

在最近的一个项目中,我们将 SMS 号码与用户帐户相关联。每个帐户都需要验证码和电子邮件激活。用户可以通过令牌激活 SMS,就像您正在使用的那样。

您可以对 IP 地址进行速率限制(不是总限制)。5 分钟内来自一个 IP 的请求不超过 10 个,或者类似的情况。

和/或您可以限制未完成的 SMS 请求。在 IP 地址请求 SMS 令牌后,必须先提交它,然后该 IP 才能请求另一个 SMS 号码。或者每个 IP 每天不超过 10 个未处理的 SMS 令牌。

此外,就像@Alan 所说,我们对每个月的 SMS 消息设置了上限。

于 2009-08-21T20:50:24.597 回答
3

我会结合使用 CATPCHA 和限制给定手机号码的请求。

此外,您应该能够使用 SMS 聚合器指定每月的预设限制。达到该限制后,服务将关闭。这样,如果您是攻击的受害者,您只需承担有限金额的责任。

除了 SMS,您可以使用一种自动服务,该服务拨打电话号码说出一次性密码(通过文本 2 语音)。这些服务的定价与 SMS 相似,并且不太可能被垃圾邮件滥用,因为开销更大。

Twilio的费用为每分钟 0.03 美元,或者在这种情况下,每次通话费用为 0.03 美元。

于 2009-08-21T20:45:41.237 回答
3

您可以做 Twitter 所做的事情,即让用户向您发送令牌(而不是您向他们发送短信)。

这将要求您找到一个提供商,让您免费(或接近它)接收文本,但这可能更容易。

于 2009-08-24T12:54:11.177 回答
0

为什么短信要花你一毛钱?利用与每个 SMS 系统相关联的 EMAIL 地址(至少在美国是这样)。

http://www.sms411.net/2006/07/how-to-send-email-to-phone.html

于 2009-08-21T20:41:58.280 回答
0

如果有人尽力滥用系统,他们很可能会找到一种方法来做到这一点。结合使用您已经提出的技术可能是阻止大多数恶意用户的最佳方法。

限制人们可以做什么(10分钟内来自1个ip的请求不超过10个,一个电话号码每周只能收到3条短信,输入号码前的验证码),但更重要的是,如果人们无法控制消息的内容没有真正的理由来利用它。

于 2009-08-21T21:09:41.687 回答