【发布时间】:2018-06-22 20:33:43
【问题描述】:
我最近阅读了很多关于如何使用 JWT 进行身份验证以通过不保存任何与会话相关的数据来提高性能的文章。根据我的理解,它使用秘密对数据(通常是 user_id)进行签名以生成 JWT 令牌。然后每个客户端请求都会发送令牌。服务器只检查签名是否可以验证并信任存储在 JWT 有效负载中的内容。
我担心的是,如果有人知道你的秘密,他可以很容易地自己创建一个 JWT 令牌并伪装成系统中的任何用户。一个简单的例子是任何可以看到源代码的人都可以轻松做到这一点。 (例如:内部成员)
你如何防止它发生?我能想到的一件事是在每次服务器重启时使用随机生成的秘密。 (如果您长时间运行服务器而不更改密钥,这可能仍然不安全)
【问题讨论】: