为应用程序构建服务器,在应用程序中注册的步骤之一是输入电话号码验证码。验证码将通过短信发送到手机,需要输入验证码才能继续注册
该应用程序将向服务器发送请求,是否有人可以找到 URL 并继续向服务器发送假电话验证码请求?你如何防止攻击?
为应用程序构建服务器,在应用程序中注册的步骤之一是输入电话号码验证码。验证码将通过短信发送到手机,需要输入验证码才能继续注册
该应用程序将向服务器发送请求,是否有人可以找到 URL 并继续向服务器发送假电话验证码请求?你如何防止攻击?
我假设您这样做是为了确认正在注册的电话号码是真实的并且属于正在注册的人。
场景一:
- 合法用户注册
- 合法用户收到短信
- 合法用户发送验证码到服务器
如果代码与发送的代码匹配,则激活用户
场景二:
- 攻击者注册
- 攻击者没有收到短信,因为他输入的电话号码不是他的。
- 随机人收到短信
-Attacker 对验证服务器启动 DoS 并尝试猜测代码。
这种情况下的 DoS 问题可以在 X 次尝试失败后通过简单的阻塞来解决。例如,将每个失败的验证尝试存储到一个表中,当一个帐户有 5 次失败的尝试时,阻止验证 X 分钟。这类似于多次使用用户名和密码登录失败。验证码必须有足够多的可能组合,以使暴力攻击不可行。
另一个问题是您的服务可能会被用来向随机发送验证短信的人发送垃圾邮件。您必须限制每个 IP 每个 X 时间间隔或类似的注册。您还可以使用验证码来防止自动注册。
场景 3:
- 攻击者注册
- 攻击者输入假电话号码,所以没有人收到短信
- 你的短信服务器收到短信的发送失败,所以什么都没有发生。用于发送短信的验证码已失效。
我希望这会有所帮助,并且我正确理解了您的意图。
不要忘记验证端点也需要保护;您必须限制给定验证码的尝试次数或使用足够长的验证码以使其无关紧要。