使用 WebOTP API 在電腦上驗證電話號碼

從 Chrome 93 版開始,網站可以透過電腦版 Chrome 驗證電話號碼。

WebOTP 可讓使用者在行動網站上輕鬆輸入電話號碼驗證碼,無須切換應用程式。Chrome 93 也將這項功能擴充至電腦。請繼續閱讀以瞭解詳情!

簡介

簡訊動態密碼 (OTP) 通常用於驗證電話號碼,例如用於驗證程序的第二個步驟,或驗證網站上的付款。不過,從電腦切換到手機、開啟簡訊應用程式、記下並在原始網站輸入 OTP 的整個流程,都會增加使用者體驗的摩擦力。這麼做很容易出錯,而且容易遭到網路釣魚攻擊。

WebOTP API 可讓網站以程式輔助方式從簡訊中取得一次性密碼,並自動為使用者填寫表單,無須切換應用程式。簡訊具有特定格式,且會繫結至來源,因此可降低網路釣魚網站竊取 OTP 的風險。

WebOTP API 運作情形。

WebOTP 尚未支援的用途之一,是針對遠端電腦裝置或筆記型電腦的電話號碼驗證要求,因為 API 僅適用於具備電話功能的裝置。這個 API 現在支援監聽其他裝置收到的簡訊,協助使用者在 Chrome 93 中完成電腦版的電話號碼驗證。

電腦上的 WebOTP API。

立即試用

必要條件

示範

如要親自在電腦上試用這項無縫電話號碼驗證流程,請按照下列步驟操作:

  1. 在電腦上前往 https://web-otp-demo.glitch.me/。按一下「驗證」按鈕。
  2. 使用第二支手機傳送螢幕上顯示的簡訊內容到 Android 裝置。
  3. 當簡訊傳送至 Android 裝置時,系統會顯示對話方塊,詢問您是否要在電腦上驗證電話號碼。按下「提交」即可核准。
  4. 在電腦上,系統會自動將傳送至 Android 裝置的驗證碼填入輸入欄位。

WebOTP API 的運作方式

讓我們來看看 WebOTP API 的運作方式:

…
  const otp = await navigator.credentials.get({
    otp: { transport:['sms'] }
  });
  if (otp.code) input.value = otp.code;
…

簡訊必須採用原始端限定的一次性代碼格式

Your OTP is: 123456.

@web-otp-demo.glitch.me #123456

請注意,最後一行包含要繫結的來源,前面有 @,後面有 OTP,前面有 #

收到簡訊後,系統會彈出資訊列,提示使用者驗證電話號碼。使用者按下 Verify 按鈕後,瀏覽器會自動將 OTP 轉寄至網站,並解析 navigator.credentials.get()。網站就能擷取 OTP 並完成驗證程序。

如要進一步瞭解如何使用 WebOTP API 在網站上驗證電話號碼,請參閱這篇文章

如何在電腦上使用 WebOTP API

透過簡訊驗證電話號碼的做法廣泛運用,且不受平台限制。行動裝置上的所有用途都應適用於電腦裝置。

在電腦上使用 WebOTP API 與在行動裝置上使用的方式相同,因此網站可以在不同平台上部署相同的程式碼。

瀏覽器支援和互通性

這項功能由 Chrome 同步功能提供支援,因此目前僅適用於 Chrome。Chrome 不支援在 iOS 或 iPadOS 上接收及傳送 SMS 訊息。

雖然 Chromium 以外的瀏覽器引擎不會實作 WebOTP API,但 Safari 會透過 input[autocomplete="one-time-code"] 支援共用相同的 簡訊格式。在 Safari 中,只要使用者已開啟 iMessage 自動同步處理功能,當含有來源綁定一次性代碼格式的簡訊傳送至 iOS 或 iPadOS 上的相符來源時,系統就會將訊息轉寄至 macOS。如果使用者將焦點放在輸入欄位,Safari 會建議使用者輸入 OTP。

意見回饋

您的意見回饋對改善 WebOTP API 至關重要。歡迎試用並提供意見

相片來源:Luis VillasmilUnsplash 網站上