Skip to content
全部文章

验证链接只能使用一次,并不代表你知道是谁打开了它。

查尔斯·阿奇邦

, 联合创始人

一次性链接能限制重复使用,却无法单独证明使用者是谁。在服务器端将每次验证流程绑定到指定客户,并在授予账户权限前核对绑定关系。

Toden插画:表示托管验证链接及其账户绑定的钥匙

要点

  • 持有链接和拥有账户是两种不同的证据。
  • 在后端创建并保存客户与会话的绑定关系。
  • 改变账户权限前,核对权威结果及其客户绑定。

已完成的验证应属于服务器创建的指定客户和流程。改变账户权限前,必须将这一关系与权威结果核对。浏览器成功跳回页面,或有人持有一次性链接,都不够。

例如,客服人员把验证URL复制到了错误的对话。即使链接只能使用一次,你仍需要知道产生的证据可以影响哪个账户。

先建立绑定,再发送链接

在后端使用指定客户引用、组织、环境和工作流创建验证流程。发送URL之前,把返回的会话引用保存到这份申请中。

不要让浏览器提供的客户ID决定哪个账户获得验证。先确认请求者有权为该账户启动流程。

OWASP授权指南 (在新标签页中打开)建议每次请求都检查权限。创建验证流程和使用验证结果时,都应遵循这个原则。

把发送方式纳入控制

通过面向指定客户的渠道发送链接。不要在不需要完整链接的分析事件、截图或客服备注中保留验证URL。团队之间使用引用,而不是复制URL。

如果链接发给了错误的人,应在支持的情况下,使用提供商文档明确的撤销或过期控制。不要假设生成新链接就会使旧链接失效。如果无法确认剩余风险,应升级处理。

OWASP会话管理指南 (在新标签页中打开)解释了URL携带令牌时的注意事项。确认提供商的实际行为,不要自行推定保证。

在服务器端接受结果

结果到达时,验证真实性,并按需要读取当前状态。核对已保存的客户、流程和环境。在授予权限前,确认已达到政策要求的最终决定。

采集完成页面可以告诉客户下一步是什么,但不应独立批准账户。待处理、已审查和已完成状态必须各有明确含义。

测试错误接收者的路径

测试两个客户分别使用不同浏览器会话、链接被非指定客户打开、流程过期,以及结果延迟到达。确认任何结果都无法更新无关账户。

Toden支持绑定客户的托管流程;账户权限仍由你的应用执行。先阅读托管链接与SDK选择指南,再利用集成参考端到端验证绑定关系。

参考来源

查尔斯·阿奇邦

关于作者

Charles Archibong

联合创始人

Charles Archibong是Toden的联合创始人。他撰写有关身份验证、金融科技以及构建可信数字服务的实际工作的文章。

  • 开发者

    SDK 嵌入或托管链接:选择如何集成验证

    如果验证过程在产品内部进行,则将 SDK 嵌入其中;如果验证过程在产品外部进行,则向每位申请人发送一个托管链接。无论采用哪种方式,都应运行已发布的流程,这样选择的关键就在于交付方式,而不是流程本身。

  • 开发者

    正确验证 webhook 签名并处理重试

    对原始请求字节验证 V2 签名,拒绝重放窗口之外的时间戳,在执行任何工作之前,在唯一约束下记录事件 ID,并且只有在事件被持久存储后才返回 2xx。

打造您的产品。其余交给我们。

端到端身份验证与合规服务,遵循全球标准,为创业者提供合理定价。