20

我想知道这些短信注册机制是如何工作的。我在互联网上搜索,但问题是有太多的短信提供商想要销售在线短信服务,所以我找不到任何东西......

问题:这是如何工作的:设置您的手机号码,并向您发送一条带有 otp 的短信。将此密码输入应用程序。

后面是什么?他们有短信网关或类似的东西吗?要花多少钱?

谢谢

4

4 回答 4

16

这是一个基于 Nexmo 构建的简单电话号码验证服务(免责声明,我为 Nexmo 做一些开发人员宣传)。我认为这基本上就是您要查找的内容,目标是验证一个数字是否确实属于用户(也可以用于第二因素身份验证)。

移动应用程序的基本集成(专门针对此示例代码,但通用流程):

  • 发送要验证的电话号码,接收唯一的哈希。
  • 验证系统向用户发送一个唯一代码。
  • 一旦用户将该代码传递给您的应用程序,原始哈希和代码就会发送到验证系统进行验证。

您可以删除托管部分,只需在应用程序中执行这些步骤(生成代码、通过 SMS API 发送、检查用户输入的代码)。但是,此时需要考虑一些事项:

  • SMS API 的凭据被编译到您的分布式应用程序中。这是你想冒险的事情吗?
  • 代码从设备通过网络发送;虽然 SSL 将停止随意观察代码,但想要伪造注册的人很可能会从 HTTP 请求中捕获代码。

这两个问题都可以通过将验证系统放在移动应用程序之外来解决。

于 2012-09-13T11:03:09.617 回答
9

我知道这篇文章太旧了,但这是为将来访问此页面的人准备的:

用户“Harsh Shah”所说的是错误的..

您不应该在设备本身上生成随机数!这损害了整个验证,

  1. 您向用户询问电话号码,然后将其发送到服务器。
  2. 作为对该请求的响应,您生成一个随机数并将用户编号保存在 db 上的用户记录中,并使用该随机数发送 SMS,请求的响应应该是 SENT-OK,NOT-SENT。
  3. 设备获取 SMS 并将其发送回服务器以与现有的 db 记录进行比较。

数据交换:

  1. 电话发送('012345567')-> 服务器响应('SENT-OK');在后台:服务器:[生成号码,以短信形式发送,为用户 01234567 保存在数据库中,例如:123123]

[手机读取短信,例如'123123']

  1. 电话发送('01234567','123123')->服务器响应('AUTH-OK');

在后台:服务器:[检查数据库记录用户01234567,将步骤1中生成的随机数与用户发送的数字进行比较)。

如果您在用户手机中生成号码,任何脚本小子都可以通过从内存/存储中提取此号码(很容易做到)并欺骗包含它的短信(也很容易做到)来破解您的身份验证......您可能认为这是一种罕见的情况,但这是安全性中的一个主要漏洞,如果您按照“Harsh Shah”所说的方式进行操作,您可以将自己验证为任何现有用户并从他们那里窃取数据......

于 2015-02-19T17:34:58.927 回答
4

基本原理是:

  1. 在设备上的应用程序中生成随机代码。询问用户他的手机号码。
  2. 将此代码和手机号码发送到您在服务器上运行的应用程序。
  3. 调用短信网关 API 将代码作为消息发送到指定的手机号码。

有许多 SMS 网关提供商。你可以在谷歌上搜索。他们中的大多数还提供了在各种编程语言中使用其 API 的教程。费用主要基于每条消息,通常以短信数量的套餐形式购买。

于 2012-09-13T09:28:38.787 回答
2

本文介绍了如何将短信验证集成到您的 android 应用程序中,就像 whats 应用程序一样。

Android 添加短信验证,如 WhatsApp – 第 1 部分

Android 像 WhatsApp 一样添加短信验证 – 第 2 部分

在此处输入图像描述

基本上以下步骤涉及验证手机号码

  1. 第一个用户手机号码将被发送到我们的服务器,在那里将创建新的用户行。

  2. 我们的服务器向 SMS 网关请求带有验证码的手机号码的短信。

  3. SMS网关向用户设备发送带有验证码的SMS。

  4. 验证码将再次发送回我们的服务器进行验证。我们的服务器对其进行验证并激活用户。

于 2015-08-02T05:50:56.747 回答