JWT伪造 | Personal Blog

JWT伪造

1.JWT是什么

JWT指JSON Web Token,是一种开发标准协议,通过数字签名的方式保证信息传递的安全性

2.JWT的应用

JWT通常被用于授权与信息交换

当用户链接Internet服务时,服务器会对用户的身份发起验证,然后生成一个JSON对象并 添加签名(防抵赖)返还给用户。用户在之后的与服务器进行的通信将在发送请求时返回 JSON对象以验证身份

3.JWT的结构

JWT分为头部、有效载荷与签名三部分

JWT头部分是一个描述JWT元数据的JSON对象,通常如下所示。

{

“alg”: “HS256”,

“typ”: “JWT”

}

在上面的代码中,alg属性表示签名使用的算法,默认为HMAC SHA256(写为HS256)

typ属性表示令牌的类型,JWT令牌统一写为JWT。

最后,使用Base64 URL算法将上述JSON对象转换为字符串保存。

有效载荷部分,是JWT的主体内容部分,也是一个JSON对象,包含需要传递的数据。

默认情况下JWT是未加密的,任何人都可以解读其内容,因此不要构建隐私信息字段,存放保密信息,以防止信息泄露。

JSON对象也使用Base64 URL算法转换为字符串保存。

签名哈部分是对上面两部分数据签名,通过指定的算法生成哈希,以确保数据不会被篡改。

首先,需要指定一个密码(secret)。该密码仅仅为保存在服务器中,并且不能向用户公开。 然后,使用指定的签名算法生成签名。

在计算出签名后,JWT头,有效载荷和签名三个部分组合成一个字符串,每个部分用”.”分隔,就构成了整个JWT对象。

4.JWT的用法

客户端接收服务器返回的JWT,将其存储在Cookie或localStorage中。

此后,客户端将在与服务器交互中都会带JWT。如果将它存储在Cookie中,就可以自动发送,但是不会跨域,

当跨域时,也可以将JWT放置于POST请求的数据主体中。