You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在无登录用户的情况下对REST或Web请求进行身份验证?

解决未认证邮件链接请求的安全校验方案

针对你说的场景——未认证用户通过邮件链接访问页面,页面会发起REST请求到后端,需要防止仅知晓URL就发起非法请求,这里有几个实用的方案,核心是用绑定资源的令牌机制来做校验:

方案1:带签名的无状态令牌(推荐永不失效场景)

这个方案不需要存储令牌,完全通过签名来校验合法性,适配你要“永不失效”的需求:

  • 生成邮件链接时,后端把**用户标识(比如收件人邮箱)、目标资源ID、极远的过期时间(比如设为2099年,实现近似永不失效)**这些信息,用后端专属密钥做HMAC-SHA256签名,把原始信息和签名串拼接(或加密成一个字符串)作为令牌。
  • 邮件链接格式示例:https://yourdomain.com/verify-page?token=eyJlbWFpbCI6InRvbUBleGFtcGxlLmNvbSIsInJlc291cmNlSWQiOjEsInNpZ25hdHVyZSI6IjE2Mz...
  • 当页面发起REST请求时,把这个令牌放到请求头或参数里传给后端。后端先拆分令牌里的原始信息和签名,用同样的密钥重新计算签名并对比:
    • 签名一致且信息匹配(比如确认资源确实属于该邮箱用户),就返回数据;
    • 签名不一致则直接拒绝请求。
  • 优势:无需数据库存储,性能高;只要后端密钥不泄露,令牌就安全,且能实现“永不失效”。
  • 注意:令牌长度建议至少32位以上,避免被暴力破解;传输必须用HTTPS,防止令牌被中间人劫持。

方案2:数据库存储的绑定令牌

如果需要后续能手动撤销令牌(比如用户反馈链接泄露),可以用这个方案:

  • 后端为每个邮件链接生成唯一的随机令牌(比如UUID v4),同时在数据库里存储令牌对应的资源ID、用户标识、有效状态(默认有效),不设置过期时间即可实现永不失效。
  • 邮件链接带上这个令牌,页面请求后端时传入令牌,后端查询数据库确认令牌有效且对应资源正确,就返回数据。
  • 优势:可以随时在数据库标记令牌失效,安全性更可控。
  • 劣势:需要维护令牌存储,增加数据库查询开销。

通用注意事项

  • 令牌要和具体资源绑定:一个令牌只能用于访问特定页面及对应REST接口,不能通用所有资源,缩小风险范围。
  • 不要在令牌里明文存储敏感信息:即使加密,也尽量只放非敏感标识类信息(比如邮箱、资源ID),避免泄露隐私。
  • 可选额外校验:比如记录第一次使用令牌的IP,后续请求IP变化时触发二次验证(如邮件验证码),但会影响用户体验,按需选择。

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:28:17