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