Telegram Bot API深度链接验证新注册用户:错还是错



只是前言。您可以跳到下一个标题

我在一家预算有限的初创公司工作。最近,我一直在尝试设计一个RESTful API作为我正在开发的移动应用程序的后端。(不久的将来也将开发一个基于Web的SPA客户端)。当然,它不是一个公共的API,但我们知道它"可以"通过篡改网络活动或调查Web客户端源文件来泄露。

几乎所有API方法都使用基于JWT的Token Authorization EXCEPT用户注册方法进行保护,该方法接受emailpassword并创建用户。因此,该系统很容易受到垃圾邮件发送者的攻击。

短信是最佳解决方案

您可以跳到下一个标题

我一直在研究各种方法,比如IP速率限制和移动应用程序上的CAPTCHA(!)来阻止垃圾邮件发送者,但都不令人满意。因此,我产生了电子邮件验证的想法,这也不是最好的方法。垃圾邮件发送者可以很容易地创建虚假的电子邮件地址,并解析收到的邮件内容,以验证他们的一批注册帐户。

到目前为止,我发现最好的是使用短信验证。电话号码不容易伪造,每一个都会为垃圾邮件发送者付出代价。它并不完美,但将风险降至最低。所以我决定在DB中生成并存储一个密钥,通过短信发送给用户,并要求他们在应用程序中输入代码。然后,如果正确,请注册用户并存储电话号码,以防止多次使用同一号码。到目前为止还不错。

Telegram Bot取代SMS验证

由于预算有限,我想到了在短信验证之外使用Telegram来降低短信服务提供商的相关成本。这就是我们的想法。

Telegram使用同样的方法。它在用户注册时验证电话号码。因此,我们可以相信,每个Telegram用户都是拥有有效电话号码的真人。因此,我可以开发一个名为ValidatorBot的Telegram机器人程序,并使用深度链接功能启动机器人程序,参数指示将要验证的注册请求:

https://telegram.me/ValidatorBot?start=user_registration_token

然后将上面的链接显示为">使用Telegram注册"。当用户打开链接并点击机器人屏幕的START按钮时,一条包含user_registration_token的消息将发送到我的服务器,这样我就可以将user_registration_token标识的注册过程标记为有效过程,并继续注册用户并存储他们的Telegram用户ID,以阻止用一个Telegram帐户创建多个帐户。

我以前从未见过这样的实现,在网上也找不到任何相关的东西

  • 这不是一种用户友好的方式,让他们打开Telegram,点击开始,然后切换回应用程序才能继续
  • Telegram用户可以被删除。垃圾邮件发送者可以删除他们的Telegram用户,使用相同的电话号码创建一个新用户,并使用新的Telegram UserID再次注册。尽管如此,这并不是一个大问题,因为Telegram在有限的时域内至少24小时内拒绝特定电话号码的多次注册意图。(我想每天注册三次)

你怎么看?你认为这种验证方法有什么差距吗?有安全漏洞吗?

最好不要只按START按钮,然后在按下后向用户显示代码,并要求他们在应用程序中输入代码?(就像在短信方法中一样)或者得到START信号就足够了?

您可以通过Telegram bot按钮请求电话号码,并获得用户的真实电话号码,这样您就可以节省短信价格。

最新更新