你如何防止验证码攻击到服务器

时间:2013-12-30 12:31:22

标签: mobile sms sms-verification

为应用构建服务器,并在应用中注册的其中一个步骤是输入电话号码验证码。验证码将通过短信发送到手机,需要输入验证码才能继续注册

该应用程序会向服务器发送请求,是否有人可以找到该网址并继续向服务器发送假电话验证码请求?你如何防止这次袭击?

2 个答案:

答案 0 :(得分:2)

我假设您这样做是为了确认正在注册的电话号码是真实的并且属于正在注册的人。

情景1:

-Legit用户注册

-Legit用户收到短信

-Legit用户将验证码发送到服务器

如果代码与发送的代码匹配,则激活用户

情景2:

- 攻击者注册

-Attacker没有收到短信,因为他输入的电话号码不是他的。

- 随机人收到短信

-Attacker针对验证服务器启动DoS并尝试猜测代码。

在这种情况下的DoS问题可以在X次尝试失败后用简单的块解决。例如,将每个失败的验证尝试存储到表中,当有5个帐户失败尝试时,阻止验证X分钟。这类似于多次使用用户名和密码登录失败。验证码必须具有足够的可能组合,以便蛮力攻击不可行。

另一个问题是,您的服务可能会被用于通过验证短信向随机用户发送垃圾邮件。您必须限制每个X时间间隔或类似的IP每个IP的注册。您也可以使用验证码来阻止自动注册。

场景3:

- 攻击者注册

-Attacker输入了假电话号码,因此没有人收到短信

- 您的短信服务器收到短信发送失败,所以没有真正发生。用于发送短信的验证码无效。

我希望这有点帮助,我理解你的意图。

答案 1 :(得分:0)

  1. 使用验证码来防止自动化。
  2. 将频率验证请求限制为一个数字,最好使用exponential backoff

别忘了验证端点也需要保护;您必须限制给定验证码的尝试次数,或者使用足够长的验证码,以免无关紧要。