在短信注册和验证中查找机器人
Find bots in SMS registration and verification
我正在为我的 Django 项目实现一个 SMS 注册系统。
像Whatsapp或telegram messenger一样,用户只需使用手机号码即可注册和登录。和 OTP 代码。
但是我在我的申请中发现了一个问题。
当用户输入他的号码时,我的应用程序会通过短信向用户发送一个 OTP。他不能在不到 3 分钟的时间内通过 SMS 请求新的 OTP。一个用户一天总共可以通过短信请求10个OTP。
但是如果黑客编写了一个机器人来输入不同的手机号码,我的应用程序无法检测到。
例如一个机器人有 10000 个手机号码的字典,一个一个地输入这些号码。我的应用程序只是将带有短信的 OTP 发送到 10000 个不同的手机号码。而且我将不得不向我的 SMS 服务提供商支付很多费用。
我怎样才能避免这个问题? Whatsapp 之类的 Messenger 如何解决这个问题?
您可以采取多种措施来防止机器人垃圾邮件。您可以使用像 Google 中的 recaptcha 这样的验证码,或者如果您不想要任何可见的输入,您可以查看 honypot 方法(添加一个由 css/js 为普通用户隐藏的字段,机器人将填充,如果输入已填写忽略表单)。
您可以做的另一件事是在 register/login 页面上设置速率限制,有一个 Django 应用程序提供此 https://github.com/jsocol/django-ratelimit。
我正在为我的 Django 项目实现一个 SMS 注册系统。 像Whatsapp或telegram messenger一样,用户只需使用手机号码即可注册和登录。和 OTP 代码。
但是我在我的申请中发现了一个问题。
当用户输入他的号码时,我的应用程序会通过短信向用户发送一个 OTP。他不能在不到 3 分钟的时间内通过 SMS 请求新的 OTP。一个用户一天总共可以通过短信请求10个OTP。 但是如果黑客编写了一个机器人来输入不同的手机号码,我的应用程序无法检测到。
例如一个机器人有 10000 个手机号码的字典,一个一个地输入这些号码。我的应用程序只是将带有短信的 OTP 发送到 10000 个不同的手机号码。而且我将不得不向我的 SMS 服务提供商支付很多费用。
我怎样才能避免这个问题? Whatsapp 之类的 Messenger 如何解决这个问题?
您可以采取多种措施来防止机器人垃圾邮件。您可以使用像 Google 中的 recaptcha 这样的验证码,或者如果您不想要任何可见的输入,您可以查看 honypot 方法(添加一个由 css/js 为普通用户隐藏的字段,机器人将填充,如果输入已填写忽略表单)。
您可以做的另一件事是在 register/login 页面上设置速率限制,有一个 Django 应用程序提供此 https://github.com/jsocol/django-ratelimit。