S2.09.3Actionable validation error设计研究

校验失败需说明期望格式

别名: 可修复错误提示 · 输入格式提示 · validation error message

概念解释

可行动的校验错误(actionable validation error)不仅说“无效”,还应指出用户能怎样修复:哪个字段有问题、该地区接受什么结构、哪些字符或范围可用,并给出非真实数据的本地化示例。提示应对应当前选定的数据辖区,而非界面语言默认值。说明可修复的输入契约并不等于公开所有判定逻辑;账户是否存在、风控阈值、验证码细节或证件真实性等安全敏感结果不应成为可探测的判定器。

机制

“格式错误”把诊断负担留给用户,尤其在用户熟悉的写法与系统内部格式不一致时,会诱发反复试错、放弃或伪造占位值。好的提示缩小问题空间,并把可见标签、示例、约束和实际解析器保持一致。但错误信息也是系统输出:如果它区分“账号存在”“号码真实但不属于你”或逐项暴露反滥用规则,攻击者可据此枚举和调整输入。因此需要分层错误模型:公开足以完成正常任务的格式契约,把安全判定收束为不透露内部状态的通用结果,并在受控日志中保留诊断信息。

怎么研究

可用性测试应观察用户在首次失败后能否无需外部帮助完成修复,记录首次修复成功率、连续失败次数、耗时、放弃率和错误焦点定位。测试材料覆盖不同地区的熟悉写法、键盘与屏幕阅读器、粘贴、多个同时错误以及服务端返回错误;确认提示语言、字段方向和示例均能理解。安全评审则以枚举、响应差异和规则探测为威胁场景,比较文案、状态码、时序与重试行为是否泄露敏感状态。两类测试需要共同决定信息粒度。

边界

示例不能代替完整契约,也不能使用可能被误认为真实身份或账号的数据。对模糊日期、多个地区都合法的号码或缺失上下文,仅显示一个例子可能把用户误导到错误解释,应先请求必要上下文。安全敏感流程可以采用较笼统的提交结果,但仍须在输入前说明公开格式条件,并提供合法用户可执行的恢复路径。辅助技术不能只依赖颜色、占位符或提交后的顶部摘要来发现错误。

怎么落地

  • 在输入前显示稳定的标签和简短格式线索;失败后把错误与字段程序化关联,保留原输入并将焦点或错误摘要引向可修复位置。
  • 使用当前数据辖区的非真实示例,明确允许字符、分组方式或范围。让客户端提示与服务端接受规则共享版本,并把服务端错误映射成一致、可本地化的错误代码。
  • 将公开格式问题与敏感判定分开:前者说清修复办法,后者采用不会确认账户、证件状态或内部阈值的措辞。详细原因只进入权限受控且已脱敏的日志。
  • 用键盘、屏幕阅读器、缩放和多错误场景验证错误可被发现、朗读并修复;再做枚举与差异响应测试,确认文案、状态码和时序不会暴露安全规则。

延伸

  • 同组S2.09.1 正则校验通常隐含单一地区假设 · S2.09.2 身份证件号的格式与位数不同 · S2.09.4 宽进严出优于一律拒绝
  • 相邻L2.04 表单错误处理 · N2.02 错误消息与恢复
  • 站内检索actionable validation error · inline error message · account enumeration

同组卡片

快捷操作

分享

分享当前页面

ios_share

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