S2.07.3Layered phone number validation设计研究

严格校验会拒绝合法号码

别名: 电话号码校验 · 宽松解析 · 可能号码 · 有效号码 · 可达性验证

概念解释

分层电话号码校验(layered phone number validation)把“能否解析、长度是否可能、号码段是否有效、当前是否可达、是否由此人控制、是否适合某种通信渠道”当作不同问题。过严校验常把一个地区、号码类型或旧版元数据的假设伪装成全球真相,从而拒绝可正常使用的号码。接受输入也不等于证明号码真实:格式检查最多缩小候选范围,不能代替实际验证。

机制

Libphonenumber 的解析会规范化多种常见写法,但解析成功不执行完整有效性判断;isPossibleNumber 主要按地区元数据检查长度,isValidNumber 再检查长度与号码前缀是否落在可分配的有效范围。后者仍不说明某个具体号码已经分配、当前在线或能接收短信。号码库依赖主管机构资料并有更新延迟,运营商部署与公告也可能不同步;短码则由单独的短号码接口处理。把这些层级压成一个布尔值,或强制号码所属地区等于用户居住地区,都会产生误拒,同时也可能留下误收。

怎么研究

用混淆矩阵而不是单一“通过率”评估校验:以人工确认或目标渠道验证结果为参照,分别统计误拒合法号码和误收不可用号码。语料要包含国际用户、共享呼叫代码地区、新启用或迁移中的号段、短码、可变长度号码、携转号码和产品实际支持的通信类型,并记录号码库版本与测试日期。逐层记录解析、可能性、有效范围、号码类型、渠道验证和失败原因,可以定位是哪一层造成损失。对登录、付款或账户恢复等流程,还要测错误文案、修改路径、重试限制和备用验证方式造成的完成率与安全影响。

边界

宽松接收不是忽略安全约束。若号码用于短信登录、语音呼叫或受监管联络,仍需用对应渠道的一次性验证、风险控制和同意记录,把它们作为当时能访问该信道的证据;转接、SIM 换卡、共享设备或拦截都使这种验证不能证明持有人身份或持续控制权。一次验证也不能保证以后不换号、停机或被重新分配。isValidNumberForRegion 只适合业务确实要求号码属于某地区的场景,不能用于一般注册。短码、分机、企业私网号码和仅本地可拨号码需要各自契约,不能因普通国际号码库不接受就断言其非法。

怎么落地

  • 先容纳用户常见标点和国际格式并尝试解析;把“无法解析”“长度不可能”“号段未知”“渠道验证失败”显示为不同、可行动的错误,不用一个“号码无效”包办。
  • 在普通联系方式采集时,把可能性检查用于即时提示,把有效范围检查作为风险信号;只有业务确需时才阻断,并始终允许用户改地区或输入带 + 的号码。
  • 需要获得当前信道可访问性证据时,通过目标渠道发送一次性码或发起确认呼叫,并提供无障碍且不依赖同一号码的备用方式;不要把静态元数据结果当作送达证明,更不要把一次成功访问等同于持有人身份或持续控制权。
  • 固定并监控号码元数据版本,定期更新;用生产中的脱敏误拒案例做回归测试,对新号段可设置人工复核或有时限的降级路径,而非长期硬编码例外。

延伸

  • 同组S2.07.1 国际区号与本地格式的关系 · S2.07.2 号码长度与分组随国家不同 · S2.07.4 号码的显示格式与存储格式应分离
  • 相邻S2.05.5 字符集限制会拒绝合法姓名 · S2.09.4 宽进严出优于一律拒绝
  • 站内检索isPossibleNumber · isValidNumber · phone verification

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/S2.07.3