在用户通过身份验证之前停止 API 滥用

Stop api abuse before user is authenticated

提问人:Thoughtful Monkey 提问时间:8/18/2022 更新时间:4/21/2023 访问量:186

问:

我们有一个 Android 应用程序。用户需要使用基于短信的OTP登录,然后才能使用应用程序。

我们对 OTP 的请求是公共 API。攻击者已开始滥用此 API。与实际用户相比,API 调用次数增加了 10 倍。

有哪些不同的方法可以预防这种情况?解决方案应在响应时间范围内大规模运行,并且服务器资源不应受到影响。

REST 扩展 api-authorization 客户端攻击

评论


答:

0赞 Erik Oosterwaal 10/19/2022 #1

这称为 SMS 抽取。

您可以按 IP 地址和/或电话号码进行一些服务器端限制。但是,持续滥用者可能会有可用的号码和 IP 块。

最好的解决方案是让您的应用对发送到后端的有效负载进行签名。如果收到未签名或签名不正确的有效负载,请不要发送 OTP。

对于 iOS,有证明,对于 Android,有 Play Integrity。这些 API 允许您验证对后端的调用是否源自正版应用程序。