【问题标题】:Are unsecured JWTs rare in practice? Should they be?在实践中,不安全的 JWT 很少见吗?他们应该是吗?
【发布时间】:2017-06-30 00:40:49
【问题描述】:

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

我正在开发一个应用程序,该应用程序为一家拥有几个 有消费电子产品的商店。基本上,用户所做的只是将价格卡的格式和一些格式细节发送到后端。 结果,后端生成了一个 PDF 并将其返回给我的应用程序。

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

【问题讨论】:

    标签: javascript jwt json-web-token


    【解决方案1】:

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

    经典技术是为令牌分配一个随机标识符并维护一个已发行令牌的列表,这就是基于会话的系统的工作原理。

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

    在身份验证的上下文中,JWT 必须经过签名,以便服务器可以信任内容。如果没有,任何知道如何分配 ID 的人都可以创建假令牌。

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

    【讨论】:

    • 值得注意的是,如果你需要服务器端注销,这两个优势都会大大降低。
    猜你喜欢
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多