最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

是什么signedcookies的NodeJS和unsignedcookies之间准确的区别?

IT培训 admin 9浏览 0评论

是什么signedcookies的NodeJS和unsignedcookies之间准确的区别?

海大家,我初学Nodejs.I曾试图express.They Cookie的分析模块使用设置签署的cookie {签署:真}。

首先澄清了我。

1.为什么我应该用签约饼干吗?和

2.什么是利用签署的cookie?

我检查了解决方案,但没有人说有什么用呢?

我已经在节目中分别尝试了这两种情况下,我没有得到任何错误,而无需使用密钥和签署的cookie:

任何帮助将感激在此先感谢...

节点代码:

  1. 使用带有密钥签署饼干

app.use(cookieparser("Youcansetanydataasasecret"));
const options={
    maxAge:1000*60*5,
    httpOnly:true,
    signed:true
};
app.get('/setcookie',(req,res)=>{
    res.cookie('cookieone','This is my first cookie',options);
    res.send(`Cookie has been set...`);
});
app.get('/readcookie',(req,res)=>{
    console.log(req.signedCookies['cookieone']);
    res.send(req.signedCookies['cookieone']);
});
回答如下:

服务器向客户端发送一个cookie后,客户端可能会在未来请求发送回服务器之前修改该Cookie。有时候,这是无害的,有时它可以被应用程序所必需的,但有时是很重要的客户端发送的cookie是从原来的服务器定义的值不变。 (试想一下,包含用户名或银行账号或金额或游戏得分。与那些篡改可能破坏服务器的安全性或允许某种盗窃或欺骗的cookie。)

如果服务器需要能够检测到一个cookie并没有被客户端改变,服务器可以包括签名作为cookie的一部分,与需要保护的实际cookie数据一起。签名是从cookie中的数据和从已知仅到服务器的秘密的。这个秘密使该修改的数据产生正确的签名以及修改后的数据去一个客户就非常困难。用这种签名的Cookie是什么Cookie的分析程序模块调用签署的cookie。

当签署cookie被发送回服务器,该服务器可以验证cookie中的签名和数据相互匹配。如果他们再搭配服务器可以确信的是,数据是真实的。如果它们不匹配,那么服务器知道该Cookie已被修改客户端和服务器可以拒绝该请求。

所以,如果你想在该cookie返回的数据保证没有被客户端修改,你会使用一个签名的cookie。如果cookie中的数据是不是有价值的,你不在乎,如果它被客户端修改,或者如果你已安排使用一些替代机制来验证cookie的内容,那么你就需要使用签署的cookie。

请注意,只是签署饼干不能防范所有的客户端可能试图欺骗服务器的方式。特别是,签约不能防范重放攻击。另外请注意,这是一个非常糟糕的主意了服务器敏感数据发送到客户端的。我给把银行账号到一个cookie的例子只是为了说明这一概念。这是不是一个真正的Web应用程序应该做的。

是什么signedcookies的NodeJS和unsignedcookies之间准确的区别?

海大家,我初学Nodejs.I曾试图express.They Cookie的分析模块使用设置签署的cookie {签署:真}。

首先澄清了我。

1.为什么我应该用签约饼干吗?和

2.什么是利用签署的cookie?

我检查了解决方案,但没有人说有什么用呢?

我已经在节目中分别尝试了这两种情况下,我没有得到任何错误,而无需使用密钥和签署的cookie:

任何帮助将感激在此先感谢...

节点代码:

  1. 使用带有密钥签署饼干

app.use(cookieparser("Youcansetanydataasasecret"));
const options={
    maxAge:1000*60*5,
    httpOnly:true,
    signed:true
};
app.get('/setcookie',(req,res)=>{
    res.cookie('cookieone','This is my first cookie',options);
    res.send(`Cookie has been set...`);
});
app.get('/readcookie',(req,res)=>{
    console.log(req.signedCookies['cookieone']);
    res.send(req.signedCookies['cookieone']);
});
回答如下:

服务器向客户端发送一个cookie后,客户端可能会在未来请求发送回服务器之前修改该Cookie。有时候,这是无害的,有时它可以被应用程序所必需的,但有时是很重要的客户端发送的cookie是从原来的服务器定义的值不变。 (试想一下,包含用户名或银行账号或金额或游戏得分。与那些篡改可能破坏服务器的安全性或允许某种盗窃或欺骗的cookie。)

如果服务器需要能够检测到一个cookie并没有被客户端改变,服务器可以包括签名作为cookie的一部分,与需要保护的实际cookie数据一起。签名是从cookie中的数据和从已知仅到服务器的秘密的。这个秘密使该修改的数据产生正确的签名以及修改后的数据去一个客户就非常困难。用这种签名的Cookie是什么Cookie的分析程序模块调用签署的cookie。

当签署cookie被发送回服务器,该服务器可以验证cookie中的签名和数据相互匹配。如果他们再搭配服务器可以确信的是,数据是真实的。如果它们不匹配,那么服务器知道该Cookie已被修改客户端和服务器可以拒绝该请求。

所以,如果你想在该cookie返回的数据保证没有被客户端修改,你会使用一个签名的cookie。如果cookie中的数据是不是有价值的,你不在乎,如果它被客户端修改,或者如果你已安排使用一些替代机制来验证cookie的内容,那么你就需要使用签署的cookie。

请注意,只是签署饼干不能防范所有的客户端可能试图欺骗服务器的方式。特别是,签约不能防范重放攻击。另外请注意,这是一个非常糟糕的主意了服务器敏感数据发送到客户端的。我给把银行账号到一个cookie的例子只是为了说明这一概念。这是不是一个真正的Web应用程序应该做的。

发布评论

评论列表 (0)

  1. 暂无评论