在 React JS 中使用 jwt 解码来解码令牌是否安全?
Is that safe use jwt decode to decode token in react js?
这可能是个愚蠢的问题,但 I/m 对此很好奇。我是 React-js 和 node-js 后端的新手。我将 jwt 令牌保存在 Web 浏览器本地存储中,并在 React JS 前端解码该令牌。我的问题是在前端安全使用 jwt 解码方法,因为如果有人知道令牌也可以解码令牌?
是的,是的。
JWT 背后的想法并不是它们不能被解码,事实上恰恰相反。它们专为在分布式系统中使用而设计。相反,它们是安全的,因为它们只能使用密钥生成,而密钥只能在您的应用程序的 server-side 上可用。
JWT 实际上包括三部分 - headers、有效负载和签名 - headers、有效负载和密钥被组合并散列以形成签名。
此签名随后用于验证 headers 和有效负载未被修改。如果有,签名将不再匹配。
JWT 代码有 3 个单独的部分,用 .
分隔
Public 部分包含
HEADER:ALGORITHM & TOKEN TYPE
PAYLOAD:DATA
和一个 VERIFY SIGNATURE
来保证你的令牌是否有效。
public部分有token的人都可以提取
JWT decode
只查找 public 部分,因此在您的 front-end 代码中这样做是完全安全的。
一个例子:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
>> after decode
HEADER:ALGORITHM & TOKEN TYPE
{
"alg": "HS256",
"typ": "JWT"
}
PAYLOAD:DATA
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
答案是肯定的,也不是,如果您有一些用户识别信息(如 userId)并且您对这些数据输出没有问题,那么是的,您可以在前端对其进行解码。如果您要在令牌上存储一些敏感信息,那么不。 (这是一种不好的做法)。另请注意,无法修改有效负载。即使修改了签名也不会验证令牌。因此,最佳做法是不要在有效负载中包含敏感数据。
这可能是个愚蠢的问题,但 I/m 对此很好奇。我是 React-js 和 node-js 后端的新手。我将 jwt 令牌保存在 Web 浏览器本地存储中,并在 React JS 前端解码该令牌。我的问题是在前端安全使用 jwt 解码方法,因为如果有人知道令牌也可以解码令牌?
是的,是的。
JWT 背后的想法并不是它们不能被解码,事实上恰恰相反。它们专为在分布式系统中使用而设计。相反,它们是安全的,因为它们只能使用密钥生成,而密钥只能在您的应用程序的 server-side 上可用。
JWT 实际上包括三部分 - headers、有效负载和签名 - headers、有效负载和密钥被组合并散列以形成签名。
此签名随后用于验证 headers 和有效负载未被修改。如果有,签名将不再匹配。
JWT 代码有 3 个单独的部分,用 .
分隔
Public 部分包含
HEADER:ALGORITHM & TOKEN TYPE
PAYLOAD:DATA
和一个 VERIFY SIGNATURE
来保证你的令牌是否有效。
public部分有token的人都可以提取
JWT decode
只查找 public 部分,因此在您的 front-end 代码中这样做是完全安全的。
一个例子:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
>> after decode
HEADER:ALGORITHM & TOKEN TYPE
{
"alg": "HS256",
"typ": "JWT"
}
PAYLOAD:DATA
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
答案是肯定的,也不是,如果您有一些用户识别信息(如 userId)并且您对这些数据输出没有问题,那么是的,您可以在前端对其进行解码。如果您要在令牌上存储一些敏感信息,那么不。 (这是一种不好的做法)。另请注意,无法修改有效负载。即使修改了签名也不会验证令牌。因此,最佳做法是不要在有效负载中包含敏感数据。