javascript - 不安全的 JWT 在实践中很少见吗?他们应该是吗?

标签 javascript jwt json-web-token

我计划将 JSON Web Tokens 用于我在 Angular 2 中开发的新 Web 应用程序。 因为我在阅读一些教程以了解它的确切工作原理之前还没有使用过它。 在在线资源中,我读到不安全的 JWT 在实践中很少见。 我想知道签名和加密是否会在以下(常见)用例中增加任何额外的安全优势:

我正在开发一个应用程序,为一家拥有几家公司的公司制作价格卡/海报 有消费电子产品的商店。基本上所有用户所做的就是将价格卡的格式和一些格式详细信息发送到后端。 结果,后端生成了一个 PDF 并将其返回到我的应用程序。

这是一个只有一项任务的简单应用程序(我怀疑大多数网络应用程序都是这样的?)。 如果此应用程序是通过安全的 TLS 连接提供服务,我为什么要实现验证(签名)和安全性(加密)? 这不是多余的,只会让我的应用程序变慢吗? 或者签名和加密只是一种应该尽可能实现的最佳实践?

最佳答案

TLS 提供了一个安全的加密 channel ,但不对客户端进行身份验证(除了使用带有客户端证书的两种方式 TLS)。 Web 应用程序必须在每个请求中发送身份验证证明:凭据或身份验证 token

经典技术是为 token 分配一个随机标识符并维护已发行 token 的列表,这就是基于 session 的系统的工作方式。

与基于 session 的系统相比,JWT 的主要优势在于它不需要服务器存储。此外,避免查询数据库,因为服务器可以依赖 token 声明。

在身份验证的上下文中,必须对JWT 进行签名,以便服务器可以信任内容。否则,任何知道 ID 分配方式的人都可以创建假 token 。

仅当您想要将 JWT 的内容隐藏到客户端( channel 使用 TLS 保护)时才需要加密,例如,如果包含敏感数据。诸如主题 sub、到期日期 exp 或发行者 iss 之类的声明通常不敏感

关于javascript - 不安全的 JWT 在实践中很少见吗?他们应该是吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42180165/

相关文章:

c# - 如何在 Linux 和 MacOS 上导入 PKCS#8 - CngKey.Import 不可用

node.js - 如何处理 MVC Nodejs 服务上的角色(jsonwebtoken、mongoose)

node.js - Express 中间件 jsonwebtoken 身份验证

javascript - 禁用/检测 Windows 7 截图工具?

javascript - 选择标签不适用于表格中的提交按钮

c# - ASP.NET Core Web API Facebook JWT 身份验证

angular - Nebular - 登录后未正确获取 token 有效负载

javascript - 可视化实时动画移动标记

javascript - 在 JavaScript 中检测最新的浏览器版本

json - 如何向每个 header 添加 json 网络 token ?