我读到的所有关于在网站上使用 JWT 的内容似乎都暗示它们适用于 SPAs .
我的网站有很多静态页面,还需要用户登录。使用 JWT 合适吗?
最佳答案
取决于你所说的适当的意思。
如果你正确地生成一个 jwt 并将它存储在一个 httponly 的安全 cookie 中,它在许多方面将与一个普通的旧 session ID 相同(但它在服务器上可能是无状态的,具有所有潜在的漏洞在客户端存储状态,例如重放)。
如果您以除 httponly cookie 之外的任何其他方式存储它,它的安全性就会降低。然后,您的应用程序中的单个 xss 将允许攻击者窃取用户 token 。您是否愿意接受这种风险取决于您,但对于安全关键型应用程序,它可能还不够好。
所以简而言之,jwt 只是一种在客户端存储内容的签名(但默认情况下未加密)方式。用户或攻击者无法轻易更改内容,但仅此而已,他可以读取、重放等。
如果您只在其中存储某种 id,它与普通 session id 没有什么不同(在这种情况下没有必要使用它)。如果你存储状态( session 数据),这可能会带来你必须关心的漏洞,例如重放攻击的风险,用户能够从应用程序中找到签名 key 并为自己签名 jwts,一个缺陷在您的 jwt 实现中,用户能够看到 session 内容(因为 jwt 未加密)等。
关于security - JWT 可以用于非 SPA 网站吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40370017/