Node.js nodejs中signedcookies和unsignedcookies的确切区别是什么?

Node.js nodejs中signedcookies和unsignedcookies的确切区别是什么?,node.js,cookies,Node.js,Cookies,我是Nodejs的初学者。我在express中尝试了cookie解析器模块。他们正在使用{signed:true}设置签名cookie 首先让我澄清一下 1.我为什么要使用签名cookie?及 2.签名cookie的用途是什么 我已经检查了解决方案,但没有人说它有什么用 我在程序中分别尝试了这两种情况,没有使用密钥和签名cookie,我没有收到任何错误: 任何帮助都将不胜感激,提前谢谢 节点代码: 使用带密钥的签名Cookie app.use(cookieparser(“Youcansetan

我是Nodejs的初学者。我在express中尝试了cookie解析器模块。他们正在使用{signed:true}设置签名cookie

首先让我澄清一下

1.我为什么要使用签名cookie?及

2.签名cookie的用途是什么

我已经检查了解决方案,但没有人说它有什么用

我在程序中分别尝试了这两种情况,没有使用密钥和签名cookie,我没有收到任何错误:

任何帮助都将不胜感激,提前谢谢

节点代码:

  • 使用带密钥的签名Cookie
  • app.use(cookieparser(“Youcansetanydataasasecret”);
    常量选项={
    最大值:1000*60*5,
    httpOnly:true,
    签名:对
    };
    app.get('/setcookie',(req,res)=>{
    res.cookie('cookieone','This is my first cookie',options);
    res.send(`Cookie已设置…`);
    });
    app.get('/readcookie',(req,res)=>{
    console.log(请求签名cookies['cookieone']);
    res.send(请求签名cookies['cookieone']);
    
    });服务器向客户端发送cookie后,客户端可能会在将来的请求中将cookie发送回服务器之前修改cookie。有时这是无害的,有时是应用程序需要的,但有时重要的是,客户端发送的cookie与其原始服务器定义的值保持不变。(想象一个包含用户名、银行账号、货币金额或游戏分数的cookie。篡改这些内容可能会破坏服务器安全,或允许某种形式的盗窃或欺骗。)

    如果服务器需要能够检测到客户端没有更改cookie,则服务器可以将签名与需要保护的实际cookie数据一起作为cookie的一部分。签名来自cookie数据和只有服务器知道的秘密。这个秘密使得修改数据的客户机很难生成正确的签名来处理修改后的数据。具有这种签名的cookie就是cookie解析器模块所称的签名cookie

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

    因此,如果希望确保cookie中返回的数据未被客户端修改,则可以使用签名cookie。如果cookie中的数据没有价值,并且您不关心它是否被客户端修改,或者您已经安排使用某种替代机制来验证cookie的内容,那么您就不需要使用签名cookie

    请注意,简单地对cookie进行签名并不能抵御客户端可能试图欺骗服务器的所有方式。特别是,签名不能抵御重播攻击。还要注意的是,服务器向客户机发送敏感数据是一个非常糟糕的主意。我举的将银行账号放入cookie的例子只是为了说明这个概念。这不是真正的web应用程序应该做的事情