Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 解码jwt令牌-安全吗?_Node.js_Socket.io_Jwt - Fatal编程技术网

Node.js 解码jwt令牌-安全吗?

Node.js 解码jwt令牌-安全吗?,node.js,socket.io,jwt,Node.js,Socket.io,Jwt,使用express、socket.io和jwt基于令牌的身份验证设置测试服务器 我们已经看过这个教程了 在服务器端,教程记录解码的令牌 console.log(socket.handshake.decoded_token.email, 'connected'); 但是当我尝试记录socket.handshake.decoded_token时,变量未定义套接字。握手不包含任何带有解码令牌的变量 console.log(socket.handshake.decoded_token.email,

使用express、socket.io和jwt基于令牌的身份验证设置测试服务器

我们已经看过这个教程了

在服务器端,教程记录解码的令牌

console.log(socket.handshake.decoded_token.email, 'connected');
但是当我尝试记录
socket.handshake.decoded_token
时,变量未定义<代码>套接字。握手不包含任何带有解码令牌的变量

console.log(socket.handshake.decoded_token.email, 'connected');
所以。。我试着用谷歌搜索如何解码令牌,找到了这个页面

我粘贴了公共令牌,脚本在没有jwtSecret的情况下解码了令牌!?六羟甲基三聚氰胺六甲醚。。。然后我在想。。如果脚本可以在没有秘密的情况下解码令牌,那么它怎么可能是安全的

作为身份验证返回给客户端的公共令牌

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwibmFtZSI6ImNsYXJrIiwiZW1haWwiOiJjbGFya0BlbGVjdHJvYmVhdC5kayIsImlhdCI6MTQwMzczMTkyMSwiZXhwIjoxNDAzNzM1NTIxfQ.mVFymk6gKBPmcVObB_3ydqbJTlcv4eVNYBcahsjg0g8

令牌不是加密的,只是编码的

签名是用你的秘密构建的,它是重要的一部分,可以确保令牌没有被篡改


这里有一个不错的(简短的)

这是关于您是否信任令牌的发行人提供令牌自身持有的索赔。任何人都可以对其进行解码,也可以对完全相同的json负载进行编码,但只有您可以根据您的密钥决定是否验证天气特征

因此,在您将jwt机密丢到某处的潜在违规场景中,您应该能够更改机密并基本上使所有使用该机密颁发的令牌无效。

ok:)如果该令牌仅进行了编码,那么为什么要在其中放入任何人都可以解码的用户变量?一般(基本)建议为1。不要将敏感数据放入令牌中。2.不要把它们放在空地上。3.在标题或正文中传递它们(不在url上)。JWT基本上只是一组声明的容器格式。当签名存在并经过验证时,您可以信任这些声明。这个主题比这个要深刻得多,我强烈建议您花一些时间研究与此相关的各种RFC(JWT、JWS、OAuth JWT承载令牌等),并研究关于这个主题的安全相关讨论。