Email Verification API 服务端验证清单audience、nonce、exp 缺一不可【免费下载链接】email-verificationverified autofill项目地址: https://gitcode.com/GitHub_Trending/em/email-verificationEmail Verification APIEVPEmail Verification Protocol是一项让网站不发验证邮件、直接用密码学令牌验证邮箱所有权的浏览器新标准。本文给出一份服务端验证清单收到令牌后audience、nonce、exp三项缺一不可漏掉任何一项都可能让令牌被重放或跨站盗用。 它解决什么问题传统邮箱验证要发邮件 → 用户切到收件箱 → 抄回验证码既费时间又容易被钓鱼。EVP 的思路是复用用户已登录邮箱服务的会话浏览器直接向邮箱服务商Issuer申请一个签名令牌 EVTEmail Verification Token再自动填入你的表单服务端完成校验即可全程无需人工验证码。提案中的完整交互时序图可参考 README.md浏览器端扩展与验证流程规范则定义在 index.bs 中。 三方模型谁发令牌、谁验令牌角色身份职责Verifier你的网站生成nonce、接收并提交表单、服务端验签User Agent浏览器发现 Issuer、申请 EVT、把令牌绑定到表单Issuer邮箱服务商验证登录态、签发带签名的 EVT网站只需在表单里加一行隐藏输入框input typehidden nametoken nonce?php generate_nonce() ? autocompleteemail-verification-token其中nonce必须由服务端生成——一个加密学上足够强的随机值且每次页面渲染都唯一index.bs#L101-L109。浏览器会把你的域名origin和这个nonce一起绑死在令牌上这就是 KB-JWT 键绑定index.bs#L136。✅ 服务端验证清单三步核心校验表单提交后服务端收到email 令牌两个字段。按规范 Verifier Processing Model 与 Replay Attacks必须依次校验1️⃣ 校验audience令牌是发给我的网站吗audience应等于你自己的 origin如https://rp.example。漏检后果攻击者截获用户在你站上的令牌原样投递到攻击者控制的站点若受众校验缺失令牌照样看起来合法。2️⃣ 校验nonce令牌对应这次表单吗nonce必须与本次页面渲染时服务端生成的那一个严格一致。建议用后即焚校验成功后立即从会话/缓存中删除防止同一令牌被重复提交。漏检后果同一令牌可无限重放注册流程形同虚设。3️⃣ 校验exp令牌还活着吗exp过期时间声明必须未过期校验时应带少量时钟偏差容忍但窗口要小。漏检后果历史截获的令牌永久有效等于长期后门。4️⃣ 附加校验邮件地址一致性从令牌中提取已验证的email与表单里用户填的值做大小写不敏感比对不一致即失败index.bs#L212-L213。别忘了令牌本身还需通过 Issuer 公钥验签它是签名 SD-JWT验签细节在 EVT Issuance 一节。 一句话记忆签名保真伪audience 保站点nonce 保这一次exp 保时间email 保人。️ 为什么这三项能防重放令牌通过键绑定Key-Binding JWT同时锚定了audience你的站点和nonce本次表单所以换个网站用audience不匹配 → 拒绝换次会话重放nonce已被消费 → 拒绝过段时间再交exp过期 → 拒绝这正是规范在安全章节明确要求 Verifier MUST verify 的三项index.bs#L233-L237。 优雅降级不支持的浏览器怎么办浏览器不支持或邮箱服务商未接入时隐藏输入框就是空的——此时静默回退到传统验证码流程即可无需任何报错。这也是 EVP 的设计目标之一渐进增强、零行为破坏README.md。想本地体验完整流程可参照 HOWTO.md 中的 Chrome 开启步骤。 延伸阅读提案背景与生态分析README.md规范全文HTML 扩展、浏览器处理模型、验证模型index.bs浏览器端手动测试指南HOWTO.md贡献与讨论入口CONTRIBUTING.md、QUESTIONNAIRE.md【免费下载链接】email-verificationverified autofill项目地址: https://gitcode.com/GitHub_Trending/em/email-verification创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考