工作原理
一次验证由四个步骤组成,全部在一次页面访问内完成。服务端不为「未完成的挑战」保存任何状态。
浏览器→/challenge→本地求解→/redeem→业务接口
索取挑战
请求一份带签名的参数:子挑战数量、盐长度、难度与有效期。参数自洽,无需先存进数据库。
本地求解
浏览器在 Worker 里反复计算 SHA-256,直到哈希满足难度要求。求解器由本站静态资源提供。
兑换令牌
把解交回服务端。验签、验算、确认这份挑战未被兑换过,随后签发短时效令牌。
随表单提交
业务接口在信任数据之前校验用途与时效;不匹配或过期一律拒绝。
三层保证
01 / COST
计算成本
难度以前导零个数计量。提高一档,批量请求的代价就近乎翻倍,单个访客几乎无感。
02 / SCOPE
作用域绑定
登录页解出的挑战不能拿去注册或找回密码。用途随挑战签发并写进令牌,逐次比对。
03 / ONCE
兑换不可重放
同一份挑战只能兑换一次;令牌带过期时间与专用标记,普通会话凭证无法冒充。
本章页面
| 页面 | 内容 |
|---|---|
| 索取挑战 | 参数、签名与无状态设计 |
| 本地求解 | Worker、WASM 与难度语义 |
| 兑换令牌 | 验算、一次性兑换与令牌内容 |
| 作用域与重放 | 用途注入、白名单与重放防护 |
提示
想直接动手?跳到五分钟接入。