使用JWT作为电子邮件中的激活链接有多安全?
使用JWT作为电子邮件中的激活链接有多安全?
因此,是的,只需要确保每个电子邮件只能被激活一次(如果签名可以被伪造,那么你的验证就会被绕过,请不要使用你的示例中的可怕“秘钥”)。JWT令牌在url中使用的用例包括:
- 账户验证 - 当一个人在你的网站上注册后,你可以向他们发送一封电子邮件并附上一个链接。https://yoursite.co/account/verify?token=jwt.goes.here
- 密码重置 - 确保重置密码的人有权访问与该帐户相关联的邮箱。https://yoursite.co/account/reset-password?token=jwt.goes.here
这两个用例都是单次使用令牌(点击后过期)的好选择。
is_active
已设置,则可以拒绝该令牌。必须确保相同的令牌不能用于应用程序中的其他操作。如果在其他地方使用 JWT 令牌,则可以将声明 "action=emailActivation" 放入令牌中。 - Thilo使用像JWT这样的无状态令牌是安全的,只要您用于签署令牌和验证令牌的方式是安全的。但在将JWT用作密码重置URI中的身份验证令牌之前,您应该考虑某些其他方面...
由于您无法使特定的JWT失效(除非再次保持状态),而且到期时间不足以满足(在这种情况下),您基本上希望您的JWT成为通常所知的一次性或单次使用令牌。原因是您可能不希望单个密码重置链接被多次使用以重置密码,因为这可能允许攻击者通过不断更改密码完全锁定用户。
我在这里描述了如何实现: Single-Use Tokens w/ JWT - 基本上,您需要将服务器端的某种状态(例如用户密码的哈希值)转换为HMAC密钥,并使用它来签署用户特定的令牌。这将导致在密码更改后令牌验证失败...