簡體   English   中英

短信注冊,例如在移動應用中:whatsapp

[英]SMS registration like in the mobile app: whatsapp

我想知道這些短信注冊機制如何工作。 我在互聯網上搜索,但問題是有太多的短信提供商想出售在線短信服務,所以我什么也找不到...

問題:這是如何工作的:設置您的手機號碼,並向您發送帶otp的SMS。 將此密碼放入應用程序。

后面是什么? 他們有短信網關還是類似的東西? 要花多少錢?

謝謝

這是一個基於Nexmo的簡單電話號碼驗證服務 (免責聲明,我為Nexmo做過一些開發人員宣講)。 我認為這基本上是您要尋找的,目標是驗證數字確實屬於用戶(也可以用於第二因素身份驗證)。

移動應用程序的基本集成(專門用於此示例代碼,但是很常見):

  • 發送要驗證的電話號碼,接收唯一的哈希。
  • 驗證系統將唯一的代碼發送給用戶。
  • 用戶將該代碼傳遞給您的應用程序后,原始哈希和代碼將發送到驗證系統進行驗證。

您可以刪除托管部分,然后在應用程序內部執行這些步驟(生成代碼,通過SMS API發送,檢查用戶輸入的代碼)。 但是,此時需要考慮一些事項:

  • SMS API的憑據被編譯到您的分布式應用程序中。 您想冒險嗎?
  • 該代碼是通過網絡從設備發送的; 盡管SSL會阻止對代碼的隨意觀察,但是想要偽造注冊的人很有可能會從HTTP請求中捕獲代碼。

通過將驗證系統放在移動應用程序之外,可以解決這兩個問題。

我知道這篇文章太舊了,但這是給以后會訪問此頁面的人的:

用戶“ Harsh Shah”說的是錯誤的。

您不應該在設備本身上生成隨機數! 這損害了整個驗證,

  1. 您要求用戶提供電話號碼,然后將其發送到服務器。
  2. 作為對該請求的響應,您將生成一個隨機數,並將用戶號保存在db上的用戶記錄中,然后使用該隨機數發送SMS,對於該請求的響應應為SENT-OK,NOT-SENT。
  3. 設備獲取SMS並將其發送回服務器以與現有的數據庫記錄進行比較。

數據交換:

  1. 電話發送('012345567')->服務器響應('SENT-OK'); 在后台:服務器:[生成編號,以SMS形式發送,並為用戶01234567保存在db中,例如:123123]

[電話讀取SMS,例如為'123123']

  1. 電話發送('01234567','123123')->服務器響應('AUTH-OK');

在后台:服務器:[檢查記錄用戶01234567的數據庫,將步驟1中生成的隨機數與用戶發送的數字進行比較)。

如果您在用戶電話中生成號碼,那么任何腳本小子都可以通過從內存/存儲中提取此號碼(如此容易)並欺騙包含該號碼的短信(也非常容易)來破解您的身份驗證...您可能會認為這是一種罕見的情況,但這是安全性方面的一個重大漏洞,如果您按照“嚴厲的Shah”所說的方式進行操作,則可以對自己作為任何現有用戶進行身份驗證並從他們那里竊取數據...

基本原理是:

  1. 在設備上的應用中生成隨機代碼。 向用戶詢問他的手機號碼。
  2. 將此代碼和手機號碼發送到服務器上運行的應用程序。
  3. 調用sms網關API將代碼作為消息發送到指定的手機號碼。

有許多SMS網關提供程序。 您可以在Google上搜索。 他們中的大多數人還提供了以各種編程語言使用其API的教程。 費用主要基於每條消息,通常以SMS數包的形式購買。

本文介紹了如何將短信驗證與whats App一樣集成到您的android應用中。

Android添加類似於WhatsApp的短信驗證–第1部分

Android添加類似於WhatsApp的短信驗證–第2部分

在此處輸入圖片說明

基本上,以下步驟涉及驗證手機號碼

  1. 第一個用戶手機號碼將發送到我們的服務器,在該服務器上將創建新用戶行。

  2. 我們的服務器要求SMS網關向帶有驗證碼的手機號碼發送短信。

  3. SMS網關將帶有驗證碼的SMS發送到用戶設備。

  4. 驗證碼將再次發送回我們的服務器以進行驗證。 我們的服務器會對其進行驗證並激活用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM