客户输入手机号,点“获取验证码”,等不到就再点一次;两条短信随后一起到达,却不知道该填哪条。问题往往不在按钮是否好看,而在发送、有效期、重发和验证是否使用同一套规则。企业决定开发短信登录时,应先把这些状态写清楚,再评估接收体验和使用成本。
短信验证码能够帮助确认某次操作中,使用者取得了发往该号码的验证信息;它不能直接证明企业身份、采购权限,也不保证这个号码永远属于同一个人。只输入短信验证码登录,仍是单一验证方式,不能宣传为多因素认证。
先判断短信适合保护什么业务
普通会员入口与管理权限、敏感资料、重要交易,保护要求不同。OWASP 指出,短信存在钓鱼、SIM 卡转移和号码接管等风险。涉及高价值业务或敏感个人信息时,不应把短信作为唯一保护;应评估更强的认证方式及关键操作的再次确认。即使登录成功,用户能查看哪些资料、能做哪些操作,仍需独立授权。
验证码也不是客服识别身份的万能凭证。客户不应把验证码发给客服或填到他人提供的陌生页面;网站的普通反馈、网址和分析记录中也不应泄露验证码。需要排查时,可以使用脱敏号码、发生时间和请求编号关联记录。
用一条完整时间线约定重发规则
以下时间和次数均为虚构验收参数,不是行业统一标准:某网站约定验证码 5 分钟有效,重新发送至少间隔 60 秒;一次登录验证最多允许 5 次错误尝试,重新发送不清零该次验证累计错误次数;新码签发后旧码立即失效,成功使用后不能再次使用。
| 测试过程 | 应有结果 | 不能出现的现象 |
|---|---|---|
| 10:00 请求第一条验证码 A | 显示已提交发送请求及脱敏号码 | 把服务商接收请求写成手机已收到 |
| 10:00:30 再次请求 | 按约定提示等待,接收端执行限制 | 只因换个页面就绕过重发间隔 |
| 10:01 签发新验证码 B | A 失效,B 按新签发时间计算有效期 | 两条短信的有效规则含糊不清 |
| 随后输入 A,再输入有效 B | A 不通过;B 正确且未超限时通过一次 | A 仍能登录,或 B 成功后还能重复使用 |
这个例子选择“只认最新签发码”,好处是有效凭证边界清楚,代价是短信乱序到达时容易误填。页面应提醒使用最新一次请求对应的验证码,允许客户查看脱敏目标号码。如果新码迟迟不到,应显示仍待验证并提供恢复路径,不能偷偷让旧码恢复有效。选择其他重发策略时,也必须写明有效范围和失效条件,并经过安全评估。
验证码应与号码、用途和当前验证请求相联系。用于登录的码不能直接用于更换绑定号码;改了手机号后,也不能继续认可原号码的码。过期判断和尝试次数应由服务端执行,用户修改本机时间或刷新页面不应重置规则。
倒计时负责提示,费用控制需要另外一层
网页倒计时可以减少误触,但不能限制所有发送请求。发送频率、验证尝试次数和整体支出是三件事:第一项控制反复发送,第二项控制不断猜码,第三项帮助发现异常消耗。只控制每个号码的次数,也无法覆盖大量不同号码同时请求的情况。
限制应结合号码或账号、请求来源、设备或会话信号及整体异常判断,并保留正常用户的恢复渠道。不能只凭一个网络地址就长期封住整家公司共用网络,也不应为了防止误伤完全取消服务端限制。验证码图片可以辅助,不能代替这些规则。
预算也要说明计费口径。假设服务商按计费条数收费,单价为虚构的 0.05 元,某日正常计费 2,000 条、重复或重发计费 600 条,则估算为 2,600 × 0.05=130 元。真实价格、分段计费、国际线路和失败请求是否收费应以服务商条款为准,不能把“成功登录人数×单价”当作账单。应对照发送记录与账单,按实际业务设置告警和暂停条件。
收不到、换号码和丢失号码,走不同路径
收不到短信时,先核对脱敏号码、地区支持、请求时间和发送状态;暂时延迟不能直接判断号码无效。改错号码可以重新开始当前验证,避免让旧请求继续完成到错误账号。面向海外用户时,应提前核对服务覆盖及经过验证的替代认证方式。
丢失原号码则属于账号恢复,不能仅靠报出姓名和新号码就换绑。恢复要求应与账号风险匹配,使用事先配置的其他认证方式或经审核的恢复流程;成功换绑后处理旧凭证、会话和必要通知。否则攻击者可能绕开登录保护,直接从“联系客服换号”进入账号。
验收时看状态和记录,不只看短信能收到
使用获准的测试号码,覆盖延迟到达、重发后旧码、过期码、连续错误、成功后重复使用、两个标签页、修改目标号码和不同操作用途。核对页面反馈与服务端结果一致,并确认重复点击没有产生超出规则的计费发送。
费用告警、限流后的提示和恢复流程也要测试。失败提示应帮助用户继续,同时避免通过不同文案泄露哪些号码已经注册。记录问题时保留必要请求信息,不抄录完整验证码;只有发送、验证、权限和恢复都能核对,才算完成一条可靠的登录流程。
如需建设会员登录或改进短信验证,可以私聊客服,说明客户地区、账号保护范围和现有接收问题,沟通认证方式、恢复流程与验收要求。