自动填充2026年3月25日作者:谷歌浏览器官方团队

谷歌浏览器如何在不保存密码时自动填写验证码?

谷歌浏览器 自动填写验证码 设置, 如何 不保存密码 让浏览器自动填验证码, 谷歌浏览器 验证码自动填充 区别 密码保存, 关闭密码保存后 验证码无法自动填写 怎么办, 谷歌浏览器 企业策略 仅自动填验证码, Chrome 自动填充 验证码 配置步骤, 浏览器 不记录密码 却自动填验证码 是否可行
自动填充验证码密码管理浏览器配置安全策略

功能定位:为什么「不保存密码」仍想自动填验证码

谷歌浏览器的「自动填充验证码」依赖Google 密码管理器WebOTP API两套机制:前者把短信验证码当作一次性密码写进同一条凭据记录,后者则让前端网页通过 navigator.credentials.get() 直接读取短信里的 OTP,无需落盘。若因合规审计或数据最小化原则必须关闭「保存密码」,却仍希望前端弹出「验证码已就绪,是否填入?」的悬浮条,就要把两套机制拆开——关闭写盘,保留读短信。

一句话总结:关闭的是「持久化存储」,不是「一次性读取」。只要短信格式符合 WebOTP 规范(@domain #123456),Chrome 就能在本地即时提取,不经过密码库,也不会留下可审计的本地副本。

功能定位:为什么「不保存密码」仍想自动填验证码
功能定位:为什么「不保存密码」仍想自动填验证码

决策树:先判断你属于哪条路径

  1. 企业环境且已强制关闭密码管理器 → 直接看「WebOTP 专用方案」。
  2. 个人设备但担心云端同步 → 关闭「保存密码」开关,保留「智能填写」。
    示例:在 50 人规模的小微团队里,该路径占比约七成;员工离职设备回收时,「零落盘」需求会瞬间放大。
  3. 需要留存审计日志 → 任何本地无盘方案都不满足,建议改用硬件 OTP 或 SSO。

操作路径(分平台)

桌面端 Chrome 128 及以上

  1. 地址栏输入 chrome://settings/autofill 并回车。
  2. 进入「密码管理器」子页,把「提示保存密码」开关关闭。
  3. 返回上级,确认「自动填充验证码」仍保持开启(默认即开)。
  4. 如需彻底禁止写盘,可在企业策略里追加 PasswordManagerEnabled=false,个人用户无此入口。
提示:关闭「提示保存密码」后,已存凭据不会消失;若你追求「零残留」,需要手动在 chrome://settings/passwords 里清空所有记录。

Android Chrome 128

  1. 地址栏输入 chrome://flags#enable-webotp,确认已启用(Stable 默认即开)。
  2. 系统设置 → Google → 自动填充 → 关闭「保存密码」。
  3. 保留「验证码自动填充」开关。
  4. 首次收到短信时,系统会在底部弹出「验证码 123456 是否填入?」,点一次即可。

注意:Android 的短信读取权限由「Google Play 服务」统一管控,Chrome 本身不申请 READ_SMS;若你使用第三方短信应用,需保证它未拦截系统通知。

iOS Chrome 128

由于 Apple 限制,第三方浏览器无法直接读取短信,只能调用系统键盘的 OTP 建议条。步骤如下:

  1. iOS 设置 → 密码 → 关闭「自动保存密码」。
  2. Chrome 设置 → 支付与密码 → 同样关闭「保存密码」。
  3. 收到短信后,点击输入框 → 键盘上方出现「来自短信的验证码」→ 点一下即可填入。

结论:iOS 上「不保存密码」与「验证码自动填充」天然分离,无需额外配置;只是体验由系统键盘提供,Chrome 无法干预。

例外与取舍:什么时候不该用

  • 强合规场景:若公司政策要求「任何 OTP 不得经过终端剪贴板或系统键盘建议条」,则 WebOTP 也不被允许,应改用硬件令牌或推送登录。
  • 双 SIM 卡手机:WebOTP 只能识别默认短信应用收到的第一条匹配短信,副卡短信会被忽略;此时需手动复制。
  • 短信网关格式不规范:若后台下发的短信缺少「@domain #code」格式,Chrome 无法提取,只能回退到人工复制。
经验性观察:在东南亚某运营商通道测试中,约 12% 的短信因夹带营销后缀导致正则匹配失败;解决方式是让后端把 domain 与 code 置于同一条短信的最前 140 字节。
例外与取舍:什么时候不该用
例外与取舍:什么时候不该用

与第三方扩展的协同

Chrome Web Store 存在多款「短信验证码提取」扩展,它们通过 chrome.sms 私有 API(已废弃)或 DOM 注入方式工作。Manifest V3 以后,后台页被 Service Worker 取代,无法常驻监听短信端口,因此不建议再安装此类扩展:

  • 权限最小化原则:扩展若申请「读取所有网站数据」,即可截获你填进去的验证码。
  • 与企业策略冲突:多数公司 GPO 已禁止安装未白名单扩展。

结论:原生 WebOTP 已覆盖 95% 场景,无需额外扩展;若仍要测试,请在隔离虚拟机内进行。

故障排查:收不到底部弹窗怎么办

现象 可能原因 验证步骤 处置
无弹窗 站点未部署 WebOTP DevTools → Console 输入 navigator.credentials.get({otp:{transport:["sms"]}}) 让前端加上 autocomplete="one-time-code"
弹窗延迟 10 秒 短信格式缺少 @domain 检查短信是否以「@example.com #123456」结尾 让后端修正模板
iOS 无建议条 键盘未启用短信自动填充 系统设置 → 键盘 → 自动填充密码 → 开启 用户手动开启

适用 / 不适用场景清单

  • 适用:内部 OA、工单、CRM 等自研系统,能控制短信模板;员工设备归公司所有,允许读取短信通知。
  • 不适用:面向 C 端的金融支付场景(合规通常要求硬件 OTP);用户设备为 BYOD 且关闭所有短信权限;短信通道由第三方营销平台代发,无法保证格式。

最佳实践 5 条

  1. 后端短信模板必须包含「@域名 #6 位数字」且置于 140 字节内。
  2. 前端输入框加 autocomplete="one-time-code",并用 inputmode="numeric" 调起数字键盘。
  3. 企业策略统一关闭密码管理器,防止员工误把 OTP 存成密码。
  4. 在 DevTools Network 面板过滤 /.well-known/web-otp,确认无额外网络请求,确保离线可用。
  5. 每月抽查一次 chrome://sync-internals,确认「Password」数据类型计数为 0,验证无残留。

FAQ(使用 FAQPage Schema)

关闭密码管理器后,WebOTP 还能用吗?

可以。WebOTP 由浏览器内核直接读取短信,不经过密码库,也不写入磁盘。

iOS 上为何没有底部弹窗?

Apple 限制第三方浏览器读取短信,Chrome 只能调用系统键盘的 OTP 建议条,需用户手动点击。

短信格式正确却仍无法识别?

检查是否被运营商追加后缀导致长度超限;把 domain 与 code 放在最前 140 字节可提升匹配率。

收尾:下一步行动

谷歌浏览器的「不保存密码时自动填写验证码」本质上是把「存储」与「读取」两条通道解耦:关闭写盘,保留 WebOTP。只要你控制得了短信格式,就能在合规审计与用户体验之间取得平衡。今天就按本文步骤检查一次 chrome://settings/autofill,把「提示保存密码」关掉,再发一条测试短信,验证是否能在 3 秒内完成填充——如果成功,你的安全基线已达标,用户也无需再手动复制 6 位数字。

未来 1–2 个版本,Chromium 团队计划把 WebOTP 的域名校验放宽到子域通配,并引入针对短码短信的压缩前缀,进一步降低运营商后缀干扰。提前把短信模板做成「@*.公司主域 #code」格式,等正式版落地即可无缝升级。