保护身份验证API流程

问题描述 投票:0回答:1

我有一个API,它基本上涵盖了移动应用程序客户端的身份验证过程。 我有 2 个端点:

  1. 通过外部短信提供商发送带有 6 位验证码的短信的端点
  2. 验证代码的端点

我正在寻找一种方法来保护此“发送代码”端点免受 DDOS 攻击,以便随机用户无法通过大量请求将我的所有信用都花在 SMS 提供商的服务上。

此场景的最佳实践是什么?如果您有遇到此类问题的经验,请告诉我!

如果用户多次尝试发送代码(例如超过 3 个请求),我正在考虑实施验证码,但有很多服务可以通过编程方式解决验证码问题,我不太确定这种保护方法。而且我也不确定在移动应用程序中实施验证码是最好的决定,因为它不是真正的“用户友好”解决方案

另一种解决方案可能是短期禁止某些电话号码(例如 10 分钟),但我不太喜欢这个决定,因为禁令到期后用户可以继续发出请求,没有什么可以阻止他:)

rest backend sms ddos
1个回答
0
投票

这种欺诈通常是如何进行的,攻击者有一个号码,当它收到短信时就会产生金钱。

根据您用于发送 OTP 的服务,您可能有一些内置功能(例如,Twilio 有一个名为 FraudGuard 的功能,应该可以帮助解决此类滥用问题)。然而,他们似乎仍然存在问题,即使对于像Twitter这样的公司来说,防止这种欺诈甚至是一个问题。

如果可以选择使用 SMS 之外的另一种 2FA 方法,我建议您采用该路线(例如,使用 Google 或 Apple 等第三方身份验证提供商,并利用他们方便的 MFA 选项)。

如果您确实想提供短信,您可以实施本文文章中概述的一些策略:

良好的做法包括设置速率限制并确保消息仅发送到存在真正用户的国家/地区。还可以在请求之间设置呈指数增长的等待时间,以减少持久机器人的潜在奖励。 [...]“为了控制这种行为,您可以在表单或页面中添加验证码等质询响应系统,以确保使用它们的是人类而不是机器人。”另外,不用说,检查您帐户上的信用额度。 [...] 对您的客户号码列表进行一些检查也是值得的。例如,是否存在相邻数字组?欺诈者可能会向他们的注册脚本提供连续的手机号码块。

因此,您提出的引入验证码和保留(永久)黑名单的想法是一个好的开始。

© www.soinside.com 2019 - 2024. All rights reserved.