我的应用有一个注册服务,用户可以自己注册。但是,恶意攻击者可以编写脚本,在几秒钟内注册数千个帐户。
我的后端开发人员建议我们在移动应用程序中使用验证码。然而,我没有看到任何使用验证码的应用程序,它们会导致不良用户体验。
我的问题是如何防止这种攻击并保护我们的应用程序服务?
我的应用有一个注册服务,用户可以自己注册。但是,恶意攻击者可以编写脚本,在几秒钟内注册数千个帐户。
我的后端开发人员建议我们在移动应用程序中使用验证码。然而,我没有看到任何使用验证码的应用程序,它们会导致不良用户体验。
我的问题是如何防止这种攻击并保护我们的应用程序服务?
1:您需要设置IP检查和API调用速率/每秒钟的调用次数,以限制来自同一IP的调用。
2:更简单的方法是,在数据库中记录发起调用的IP并进行检查(由于调用经过Web服务器层,这将对您的数据库造成重负荷),如果调用成功,则可能没有安全的服务器保护您免受DDOS攻击。
这个问题对于StackOverflow来说并不是很理想,但我记得我曾经遇到过同样的问题,因此我只是分享我的实现。
是的,验证码对于移动应用程序来说是一个非常糟糕的用户体验。应该避免使用它。当然,我也避免了验证码的实现。
Dos攻击可以通过许多方式来防止,已经有一些非常成熟的技术可以做到这一点。您可以在服务器端容器中跟踪来自特定IP地址的请求,并在需要时暂时阻止该IP地址。在分布式攻击的情况下,您可以考虑忽略超出您容量的请求。
这些都是一些琐碎的建议。您还可以在服务器端考虑使用防火墙,这可能会提供这些内置支持。CloudFlare是广泛使用的防火墙之一。
您可以采取太多预防Dos攻击的选项。只需在服务器端选择其中之一即可。对于您的Web应用程序,您可能考虑保留Google re-captcha,但对于移动应用程序来说,显示验证码的想法是可怕的。
也许对您来说,使用一些 API 方法来检查垃圾注册会更有用。
例如,可以使用此 API 来检查垃圾注册 https://cleantalk.org/help/api-check-newuser
您可以在网络上添加多层安全保护。为此,您应该与后端开发人员讨论添加证书固定。
这篇文章是一个很好的解释如何做到这一点。 您还可以加密通过网络传输的任何敏感信息。
还有其他方法,如基本身份验证、摘要身份验证等,可以进一步增强安全性。