Expressjs - 理想的会话秘密大小

时间:2013-11-01 17:54:30

标签: node.js session express

secret会话express.session的理想尺寸是多少?

2 个答案:

答案 0 :(得分:3)

Cookie的标准尺寸:

通常,Cookie是由HTTP客户端(可能是浏览器)作为请求的一部分发送的令牌。由于HTTP无状态协议cookie只是告诉服务器谁是实际客户端的方法。如果您想浏览What is the maximum size of a cookie, and how many can be stored in a browser for each web site?

,请使用浏览器,浏览器对存储cookie有一定的限制

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

Sencha的连接:

Express框架在内部依赖于连接框架来管理会话,cookie和。您可以从此https://github.com/visionmedia/express/blob/master/package.json中识别出来。您可以在JSON中查看依赖关键字。

连接会话/ Cookie管理的角色:

在cookie生成中,Secret“String”在避免cookie篡改方面起着关键作用。在内部,程序将生成编码字符串并将其作为cookie的一部分附加。简而言之,您会在浏览器中看到名为“connect.sid”的cookie(这是默认值,但您可以覆盖名称)。您可以使用任何开发人员加载项在浏览器中阅读。

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

<session id encoded> . <signature>

生成此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 *******************/

    });
    ...
    ...

签名生成:

连接在“cookie-signature”模块中实现的call sign()函数。您可以通过此页面https://npmjs.org/package/cookie-signature中的示例轻松了解sign()函数的工作方式,您可以从中深入了解 https://github.com/visionmedia/node-cookie-signature/blob/master/index.js

<强>结论:

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

答案 1 :(得分:0)

上面的答案是错误的

秘诀有多大无关紧要-它对cookie的大小没有影响

您可以在此处https://npm.runkit.com/cookie-signature

进行检查
var cookie = require("cookie-signature")

cookie.sign('hello', 'tobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscooltobiiscool')

结果长度相同


对于sha256,答案是256

快速会话正在使用https://www.npmjs.com/package/cookie-signature

符号功能在这里

https://github.com/tj/node-cookie-signature/blob/025a9f3eaa65f589c766b00bf64763581fa49776/index.js#L16-L24

一些recommend 32 bytesothers recommend 64

请放心使用256位