如何在不使用验证码的情况下保护我的应用程序注册API免受垃圾邮件发送者的攻击?

6

我的应用有一个注册服务,用户可以自己注册。但是,恶意攻击者可以编写脚本,在几秒钟内注册数千个帐户。

我的后端开发人员建议我们在移动应用程序中使用验证码。然而,我没有看到任何使用验证码的应用程序,它们会导致不良用户体验。

我的问题是如何防止这种攻击并保护我们的应用程序服务?


这些都与客户端无关,因此建议您切换标签和说明以描述服务器环境。 - CommonsWare
2
您可以通过IP进行速率限制,并仅在出现可疑行为时显示验证码。 - SLaks
这种问题没有银弹。只允许IP注册、验证码或需要真实的邮件地址是已知的解决方案。 - JFPicard
@JFPicard 你所说的“真实邮件地址”是指像邮政地址那样的地址?还是指“真实”的电子邮件地址? - Alexander
5个回答

2

在我的现职工作中,我们正在开发一款被动式移动验证码SDK,名为HumanDetect。它对您的最终用户来说是透明的。它会获取传感器数据来判断手机是否由人类持有。


0

1:您需要设置IP检查和API调用速率/每秒钟的调用次数,以限制来自同一IP的调用。

2:更简单的方法是,在数据库中记录发起调用的IP并进行检查(由于调用经过Web服务器层,这将对您的数据库造成重负荷),如果调用成功,则可能没有安全的服务器保护您免受DDOS攻击。


0

这个问题对于StackOverflow来说并不是很理想,但我记得我曾经遇到过同样的问题,因此我只是分享我的实现。

是的,验证码对于移动应用程序来说是一个非常糟糕的用户体验。应该避免使用它。当然,我也避免了验证码的实现。

Dos攻击可以通过许多方式来防止,已经有一些非常成熟的技术可以做到这一点。您可以在服务器端容器中跟踪来自特定IP地址的请求,并在需要时暂时阻止该IP地址。在分布式攻击的情况下,您可以考虑忽略超出您容量的请求。

这些都是一些琐碎的建议。您还可以在服务器端考虑使用防火墙,这可能会提供这些内置支持。CloudFlare是广泛使用的防火墙之一。

您可以采取太多预防Dos攻击的选项。只需在服务器端选择其中之一即可。对于您的Web应用程序,您可能考虑保留Google re-captcha,但对于移动应用程序来说,显示验证码的想法是可怕的。


0

-2

您可以在网络上添加多层安全保护。为此,您应该与后端开发人员讨论添加证书固定。

这篇文章是一个很好的解释如何做到这一点。 您还可以加密通过网络传输的任何敏感信息。

还有其他方法,如基本身份验证、摘要身份验证等,可以进一步增强安全性。


1
这不是他正在询问的内容。 - SLaks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接