security - JWT 可以用于非 SPA 网站吗

标签 security authentication jwt

我读到的所有关于在网站上使用 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/

相关文章:

php - 在没有 mysql_real_escape_string 的情况下清理联系表

javascript - 如何使用 Linkedin Javascript API 作为我自己网站的登录?

javascript - 如何在nestjs graphql中实现用户保护

java - 自定义 JAX-RS 授权 - 在每个请求中使用 JWT

security - 如何在不使用时间戳的情况下避免重放攻击

asp.net - 使用网络表单上传病毒

c# - .NET 相互 SSL 握手 'Client Authentication'

javascript - 无法从另一个组件类调用 react 组件类

javascript - Google Cloud Functions 部署问题

python - 如何在 Python 中编码 JWT?