简体中文

开发者工具 · JWT 解码器

JWT 有效负载未加密:任何拥有令牌的人都可以读取它们

· 为什么它很重要

jwt 隐私 安全

编码的 JWT 有效负载打开到可读的 JSON
原始 ToolAcre 矢量图

Base64url 看起来像乱码,但它是可逆编码。这篇文章展示了签名令牌的声明的可读性、其中的内容以及何时需要 JWE。

它看起来是加密的——将个人数据放入令牌中的误解

长的 base64url 段看起来很混乱,这会诱使团队将它们视为隐藏数据。视觉效果具有误导性。任何持有签名 JWT 的人都可以反转公共编码并读取 JSON 有效负载,而无需拥有签名或验证密钥。

ToolAcre 通过在本地解码标头和有效负载来演示该属性。它不会破坏加密,因为普通 JWS 有效负载未加密。易于检查应该塑造代币设计:仅对每个合法持有者和每个意外接收者可能能够看到的信息进行编码。

签名,而非密封:有效的 JWS 可以保护完整性,而不是有效负载机密性

有效的签名或 MAC 可以让正确配置的验证者检测更改并将令牌与可信密钥材料相关联。这是验证者政策中的完整性和来源证据。它不会向客户端、代理、记录器或任何其他获得紧凑字符串的人隐藏受保护的内容。

解码器甚至无法建立完整性,因为它从不验证。它显示令牌对自身的描述,并将签名字节报告为未经验证。这种区别避免了两个相反的错误:假设可读意味着伪造,假设签名意味着机密。

解码器显示的内容 — 每项声明均以 JSON 形式显示,无需密钥

对于标头和有效负载,ToolAcre 会转换 base64url、恢复填充、将字节恢复为 UTF-8 并解析 JSON 对象。没有秘密参与。然后,声明表直接显示字符串值,并将结构化值显示为 JSON 文本,并带有注册名称的说明,例如 `sub`、`aud` 和 `exp`。

该输出是一种透明度辅助手段,而不是真理预言。伪造的令牌可以显示与合法令牌相同的主题和角色。读取声明不需要密钥;相信它需要成功的验证以及消费服务中的发行者、受众、时间和应用程序检查。

令牌泄漏的地方 — 日志、URL、引用标头、浏览器历史记录和第三方脚本

令牌可以通过应用程序日志、复制的支持消息、URL、引荐来源传播、浏览器历史记录、屏幕截图和可以访问该字段的脚本进行泄漏。确切的路径取决于系统,但有效负载的可读性意味着过期或不可用的令牌仍可能泄露个人或操作信息。

将紧凑凭据保留在 URL 查询字符串和例程日志之外。在共享诊断信息之前对其进行编辑。签名不会净化声明,传输加密仅保护端点之间传输的数据;授权端点和意外存储仍然可以看到明文令牌字符。

有效负载中的内容 — 标识符和授权数据,绝不是持有者不应看到的秘密或数据

有效负载通常需要标识符和授权上下文,以便接收者可以在验证后做出决定。它们不应携带密码、私钥或必须防止令牌持有者读取的信息。最大限度地减少个人数据并避免不必要的消费服务所需的配置文件字段的重复。

角色和作用域并不是秘密,仅仅因为它们被编码,但在经过验证之前它们仍然不受信任。围绕最少披露和最少特权设计权利要求集。如果消费者不需要某个字段来执行其记录的工作,则将该字段排除在外可以减少所有泄漏后果。

工作示例 - 解码示例令牌并准确列出旁观者将学到的内容

解码包含 `sub`、`email`、`tenant`、`roles`、`iat` 和 `exp` 的合成有效负载。旁观者无需密钥即可了解指定帐户标识符、地址、组织上下文、声明的权限和时间。这些断言是否真实则是另一个问题。他们的文本已经被披露。

仅使用过期或测试材料对发行人生成的每个代币配置文件进行重复审核。记录每个字段及其消费者。 ToolAcre 可以帮助枚举可见内容,但无法决定组织的合法处理、敏感度或保留规则。

加密的紧凑令牌有五个部分,该 JWS 解码器识别而不是解密

当索赔必须对持有人或中介机构保密时,可能需要加密设计。 Compact JWE 有五个部分并使用收件人解密密钥。 ToolAcre 将五个段识别为加密输入,并解释说如果没有密钥它就无法泄露内容。

加密引入了除此解码器之外的密钥分发、算法策略和操作故障模式。它还不能消除完整性和授权检查的需要。从威胁模型中选择它,而不是作为对本应包含较少数据的有效负载的外观升级。

要点:假设有效负载是公共的 — 在 ToolAcre JWT 解码器中解码您自己的令牌之一并审核它公开的内容

假设普通的 JWT 有效负载在令牌移动的任何地方都是可读的。使用 ToolAcre 的仅解码视图来审核索赔暴露,而不是证明谁发布了这些值。删除秘密和不必要的个人字段,而不是依靠 base64url 来掩盖它们。

如果确实需要保密性,请使用记录的安全属性包含保密性的机制并相应地管理密钥。无论是签名还是加密,信任仍然来自配置的加密验证和策略,而不是来自解码器显示结构化输出的事实。