Expressjs - 理想的会话秘密大小

Ari*_*rad 6 session node.js express

会议的理想规模secret是多少express.session

HIL*_*EEN 1

饼干的标准尺寸:

一般来说,Cookie 是 HTTP 客户端(可能是浏览器)作为请求的一部分发送的令牌。由于 HTTP 无状态协议 cookie 是告诉服务器谁是实际客户端的唯一方法。以浏览器为例,浏览器对存储cookie有一定的限制,如果您想了解cookie的最大大小是多少,每个网站的浏览器可以存储多少个?

由于 cookie 是每个请求的一部分,因此在 cookie 中存储较大的令牌/值/字符串将占用大量带宽。所以绝对不建议存储大数据。

Sencha 的连接:

Express 框架内部依赖于 connect 框架来管理会话、cookie 和 . 您可以从此https://github.com/visionmedia/express/blob/master/package.json进行识别。您可以查看 JSON 中的依赖项键。

Connect 在会话/Cookie 管理中的作用:

在cookie生成中,Secret“String”对于避免cookie篡改起着关键作用。在内部,程序将生成编码字符串并将其附加为 cookie 的一部分。明确地说,您在浏览器中看到名称为“connect.sid”的 cookie(这是默认名称,但您可以覆盖该名称)。您可以使用任何开发人员附加组件在浏览器本身中阅读。

针对“connect.sid”的值存储包含两部分。第一个是“会话 ID”,第二个是“签名”。它看起来像下面这样,

<session id encoded> . <signature>
Run Code Online (Sandbox Code Playgroud)

生成这个cookie格式的代码部分如下,

function session(options){
  ...
  ...

  return function session(req, res, next) {
    ...
    ...

    // set-cookie
    res.on('header', function(){
      ...
      ...

      /*******************************************************/
      /*********** Cookie Generating Code ********************/

      var val = 's:' + signature.sign(req.sessionID, secret);
      val = cookie.serialize(key, val);
      debug('set-cookie %s', val);
      res.setHeader('Set-Cookie', val);
      /*********** Cookie Generating Code *******************/

    });
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

签名生成:

连接 callsign() 函数,该函数在“cookie-signature”模块中实现。您可以轻松了解 Sign() 函数的工作原理,从此页面https://npmjs.org/package/cookie-signature中的示例中,您可以从此 https://github.com/visionmedia/node-cookie获得深入的了解-签名/blob/master/index.js

结论:

最后“Secret”字符串表示将作为cookie的一部分作为签名。因此,您可以使用任意长度的“秘密”字符串,除非它(sessionid 和签名)超出了标准浏览器支持的大小。