如何阻止移动验证攻击

信息安全 谷歌 多因素 Facebook 僵尸网络 登记
2021-09-06 00:16:59

我正在考虑在我的 Web 应用程序的注册步骤中使用手机号码验证,但如何防止黑客或恶意用户向无限数量的手机发送手机验证请求?它会以多种方式造成损害。它会消耗我的 SMS 包,从而使我花钱并阻止合法用户注册。这也会给接收这些短信的人带来不便。

我想到了 IP 阻止,但我认为这不会阻止分布式攻击,它会阻止来自该 IP 的合法用户。我想过使用验证码,但这对移动用户来说不是很方便,即使它会按比例减慢攻击速度,但不足以完全阻止它。

Facebook、谷歌、微软等网站如何处理这个问题?

3个回答

您可能会考虑 IP 在请求 SMS 验证后的冷却期。这不会解决问题中指出的分布式攻击,但会在很大程度上限制单源攻击的影响。分布式攻击的有效性也会在一定程度上降低。

尽管这可能不是解决您的问题的最佳或最终解决方案,但可以将其视为额外的安全层。

大型网站按数量处理此问题。他们有大短信包,基本上是“无限短信”,所以即使是一千条恶意短信也不会“咬”他们。

对于较小的站点,通常最好有一个请求-响应系统。你可以做两件事:

或者,您有一个高级 SMS 号码,并收取与您发送 SMS 成本相当的费用;例如 5 美分。通常加上运营商费用和所有费用,最终用户的最终费用将是每条短信 0.1 美元。这是最安全的解决方案,因为注册用户必须从他的手机发送短信到您的服务以接收一次性“注册”码或验证码,然后该解决方案对您来说基本上是免费的(除了月租费)。

另一种解决方案是使用反向收费的 SMS。这意味着您使用的包允许您发送“反向收费”SMS,例如接收方为 SMS 付费。这通常意味着客户的运营商将收取短信费用,因此客户支付的费用将根据客户使用的运营商而有所不同。这样做的问题是一些预付卡根本不允许反向收费的短信(因为这可能导致卡变成负数)。第二个问题是,如果该服务被恶意使用,它会导致用户为他们没有请求的 SMS 付费,所以相应地限制这个,比如每 7 天 1 条 SMS 和电话号码。

添加 Google recaptcha 将阻止自动请求并且也适用于移动设备,但它不会阻止手动恶意请求。

如果可能,请将您的 web 应用程序上的代码提供给他们,并让他们将其发送给您,而不是反过来。