提问者:小点点

在react JS中使用jwt解码来解码令牌安全吗?


也许这是个愚蠢的问题,但我对此很好奇。我是React-js和node-js后端的新手。我将jwt令牌保存在web浏览器本地存储中,并在react js前端中解码令牌。我的问题是安全使用jwt解码方法在前端,因为有人也可以解码令牌,如果他们知道令牌?


共2个答案

匿名用户

是的,是的。

JWTs背后的想法并不是说它们不能被解码,事实上恰恰相反。它们是为在分布式系统中使用而设计的。相反,它们是安全的,因为它们只能使用秘密密钥生成,而秘密密钥只能在应用程序的服务器端可用。

JWT实际上包括三个部分--报头,有效载荷和签名--其中报头,有效载荷和密钥被组合并散列以形成签名。

然后使用该签名来验证报头和有效载荷是否未被修改。如果他们有,签名将不再匹配。

匿名用户

JWT代码有3个单独的部分,用分隔。公共部分包含

HEADER:ALGORITHM & TOKEN TYPE

PAYLOAD:DATA

验证签名来保证令牌是否有效。

每个拥有令牌的人都可以提取公共部分

JWT decode只查找公共部分,因此在前端代码中这样做是完全安全的。

举个例子:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

>> after decode
HEADER:ALGORITHM & TOKEN TYPE
{
  "alg": "HS256",
  "typ": "JWT"
}
PAYLOAD:DATA

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}