JWT(JSON web token)的三个组成部分

每日鸡汤:每个你想要学习的瞬间都是未来的你向自己求救

前几天去考 系统架构师的考试,有一道案例分析题就是关于JWT的,作为一个前端工程师,我居然没答上来,真的气的拍大腿,但凡再努力一点呀!这次一定要记住!

不瞒你说,这篇文章都是用gpt生成的

JWT(JSON Web Token)是一种用于在网络应用间安全传输信息的开放标准(RFC 7519)。它由三个部分组成,分别是头部(Header)、载荷(Payload)和签名(Signature)

  1. 头部(Header): JWT的头部通常由两部分组成:令牌的类型(即JWT)和使用的签名算法。例如,一个简单的头部可以是: { "alg": "HS256", "typ": "JWT" } 该头部的意思是使用HS256算法进行签名,并且类型是JWT。

  2. 载荷(Payload): 载荷是JWT的第二个部分,也被称为声明(Claims)。它包含了一些被称为声明的实体(例如用户、用户角色等)的信息。载荷可以包含一组标准声明,例如: { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } 还可以包含自定义的声明,例如: { "role": "admin" }

  3. 签名(Signature): 要创建JWT的签名部分,需要使用头部和载荷以及密钥进行签名。签名用于验证消息的完整性和验证发件人的身份。例如,用于创建签名的算法可以是HMAC SHA256(使用字符串和密钥并加密生成签名),或者是RSA或ECDSA(使用公钥加密和私钥解密)等。

总结起来,JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。头部用于描述签名的算法和类型,载荷用于存储信息的声明,签名用于验证消息的完整性和验证发件人的身份。

JWT和cookie都可以用于身份验证和会话管理,但它们在安全性方面有一些不同。

1. 盗用风险:JWT的盗用风险相对较高。由于JWT是无状态的,服务器不存储任何会话信息,而是将所有必要的信息存储在令牌中,因此一旦JWT被盗用,攻击者可以使用该令牌来访问被授权的资源。而cookie的盗用风险相对较低,特别是当它与HTTP-only标志一起使用时,可以防止JavaScript访问cookie,从而降低了盗用风险。

2. 防止盗用的方法:  

        - 对于JWT:使用HTTPS协议进行传输以保证通信的安全性,确保令牌不被拦截和篡改;设置JWT的过期时间,及时使其失效;在服务器端对JWT进行验证,确保它是有效且未被修改的。           - 对于cookie:使用HTTP-only标志将cookie设置为仅通过HTTP协议传输,防止JavaScript访问cookie;设置cookie的Secure标志,只在使用加密连接时发送cookie;对cookie进行签名或加密,以保证其完整性和安全性。无论是使用JWT还是cookie,都需要合理设置过期时间,并定期更换密钥或令牌,以降低盗用风险。另外,用户在使用网站或应用时也应保持警惕,避免在不可信任的环境下使用敏感信息。

你可能感兴趣的:(json,前端)