在桌面设备上使用 WebOTP API 验证电话号码

从 Chrome 93 开始,网站可以在桌面版 Chrome 中验证电话号码。

WebOTP 可帮助用户在移动网站上输入电话号码验证码, 无需切换应用。Chrome 93 将此功能扩展至 也支持桌面设备请阅读下文,了解详情。

简介

短信动态密码(动态密码)通常用于验证手机号码, 例如身份验证的第二步,或验证网上付款。 不过,从桌面设备切换到移动设备的整个流程就是打开短信 应用,并在桌面设备上记住原始网站上的动态密码,然后将其输入 会造成阻碍这样很容易出错, 网络钓鱼攻击。

WebOTP API 使网站能够 以编程方式从短信中获取动态密码 无需切换应用,只需点按一下即可自动为用户填写表单。 短信采用特定格式,并且与源站绑定,因此可以缓解 也存在钓鱼式攻击网站窃取动态密码的风险

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
WebOTP API 的实际应用。

WebOTP 尚不支持的一个用例是定位电话号码 来自远程桌面设备或笔记本电脑的验证请求 API 仅适用于具有电话功能的设备。立即使用 API 支持监听在其他设备上收到的短信,以协助用户 在 Chrome 93 中在桌面设备上完成电话号码验证。

<ph type="x-smartling-placeholder">
</ph>
适用于桌面设备的 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

请注意,最后一行包含要绑定到的出发地,前面带有 @ 然后是带有 # 的动态密码。

收到短信后,系统会弹出信息栏并提示用户 验证其电话号码用户点击 Verify 按钮后, 浏览器自动将动态密码转发到网站,并解析 navigator.credentials.get()。然后,网站可以提取动态密码并完成 验证流程。

有关详情,请参阅使用 WebOTP API 验证网络上的电话号码

如何在桌面设备上使用 WebOTP API

通过短信进行电话号码验证的应用广泛且与平台无关。任意用途 都应适用于桌面设备。

在桌面设备上使用 WebOTP API 的方法与在移动设备上使用相同, 让网站可以跨平台部署相同的代码。

浏览器支持和互操作性

此功能由 Chrome 同步功能提供支持,因此目前只能在 Chrome 上运行。 不支持在 iOS 或 iPad OS 上的 Chrome 中接收和传输短信。

虽然 Chromium 以外的浏览器引擎不会实现 WebOTP API, Safari 使用相同的短信格式 及其 input[autocomplete="one-time-code"] 支持。在 Safari 中,只要 用户已开启 iMessage 自动同步功能,而短信中包含与源绑定的短信时 一次性代码格式会以匹配来源的形式到达 iOS 或 iPadOS, 该消息会转发到 macOS。如果用户将焦点置于输入字段,Safari 会推荐动态密码供用户输入。

反馈

您的反馈对于改进 WebOTP API 至关重要。试试看 请告诉我们 和你的想法一样

照片提供者:Luis Villasmil 已开启 不启动