使用JWT向资源服务器发出请求时是否可能篡改负载?

使用JWT向资源服务器发出请求时是否可能篡改负载?,jwt,Jwt,正如我们所知,JWT是用密钥签名的,因此令牌本身不能被篡改,但是我们用JWT发送给资源服务器的负载可以是纯文本/json/xml/query字符串,那么我们如何保护负载不被篡改呢 签名正是防止有效负载被篡改的原因。如果不使签名无效,则无法修改有效负载 我还要澄清一下,(JWT)是一个开放标准,它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。JWT是以下类型令牌的通用名称: (JWS):对有效负载进行编码和签名,以便验证声明的完整性 (JWE):它们的有效载荷是加密

正如我们所知,JWT是用密钥签名的,因此令牌本身不能被篡改,但是我们用JWT发送给资源服务器的负载可以是纯文本/json/xml/query字符串,那么我们如何保护负载不被篡改呢

签名正是防止有效负载被篡改的原因。如果不使签名无效,则无法修改有效负载

我还要澄清一下,(JWT)是一个开放标准,它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。JWT是以下类型令牌的通用名称

  • (JWS):对有效负载进行编码和签名,以便验证声明的完整性
  • (JWE):它们的有效载荷是加密的,因此对其他方隐藏声明

如果要防止有效负载被篡改,请使用JWS。如果要对其他方隐藏有效负载,请使用JWE。

tl;dr为了确保有效负载(以及一般令牌)的安全,您只需使用强机密和签名算法,并在信任内容之前验证签名


JWT使用密钥签名,但有效负载可以是纯文本/json/xml/query

你似乎对JWT是什么感到困惑。没有单独的JWT和有效载荷,一个是另一个的一部分。JWT由标头、有效负载和签名组成。签名是在头和有效负载部分以及您的密钥上创建的。这意味着,如果任何一件物品被篡改,则无法验证签名

发件人:

请注意,对于已签名的令牌,此信息[头和有效负载]虽然受到防篡改保护,但任何人都可以读取。除非经过加密,否则不要将机密信息放入JWT的有效负载或头元素中


你可以自己看看。当您更改解码报头或有效负载时,它们的base64值会更改,因此签名也会随之更改。如果要将旧的签名值复制粘贴到新的JWT中,它将显示无效的签名错误。

不幸的是,没有标准的方法可以确保在传输过程中使用http头不会篡改请求正文

在所有的人中,没有一个有这样的特征

但是,如果您的项目仅限于少数几个客户机,或者如果您提供了详细的文档,那么您可以实现自己的请求签名机制

我建议您阅读更多有关以下计划的信息。以下这些可以帮助您实现这一目标:

  • :当然是最有趣的资源。它还允许
  • :同上。但并没有被广泛使用
  • 。这一个被放弃,不确保身体没有被修改

    • JWT本身不是防篡改的。要使其安全,必须通过以下两个步骤进行转换:

    • 使用发件人的私钥签名
    • 使用接收方的公钥加密
    • 使用发送方的私钥签名可确保可以检测到对令牌的任何未经授权的修改

      使用接收方的公钥加密将确保令牌实现保密,并且只有预期的接收方才能看到令牌内容

      由发送方签名的JWT称为JWS。 加密的JWS称为JWE

      更多信息:

      有效负载至少应该受到SSL的保护。不太可能有人知道有效载荷的起点和终点。你的问题还不够清楚。我猜问题中的“有效负载”指的是请求主体。而不是令牌的有效负载。是吗?是的,弗洛伦特穆塞利,我说的是请求体。