Nodejs 使用 koajs/session 的同学们注意了 session 存在安全 bug

发布于 1周前 作者 ionicwang 来自 nodejs/Nestjs

Nodejs 使用 koajs/session 的同学们注意了 session 存在安全 bug

昨天和前端一起调试程序。基于 nodejs 使用 koajs/session 处理 发现一个问题,当截断一个正常的请求时,浏览器下, session 是会失效的,但是在某些工具下,比如:burpsuite 下截断这个请求,发送给 Reperter 然后再次重放,这是 session 是不会失效的,可以重复利用。

看图 https://pic2.zhimg.com/v2-1d684361e82169238d6943e0e64369ae.png

OK 友情提示~


1 回复

关于Node.js中使用koa-session存在的安全漏洞问题,确实需要引起注意。koa-session是一个流行的中间件,用于在Koa框架中管理会话(session),但如果使用不当或未及时更新,可能会引入安全风险。

一个常见的安全问题是会话劫持(Session Hijacking),这通常发生在会话ID被恶意用户获取时。为了防止这种情况,可以采取以下措施:

  1. 使用安全的Cookie属性:确保会话ID存储在HTTPOnly和Secure的Cookie中。这样可以防止JavaScript访问Cookie,同时确保Cookie只在HTTPS连接中传输。

    app.keys = ['your-secret-key'];
    const CONFIG = {
      key: 'koa:sess',  // signed cookie name
      maxAge: 86400000, // 1 day
      autoCommit: true, // automatically commit headers (default true)
      overwrite: true,  // can overwrite or not (default true)
      httpOnly: true,   // cookie only accessible by server
      signed: true,     // signed cookie
      rolling: false,   // Force a session identifier rollback
      renew: false,     // renew session when session is nearly expired
      secure: true      // secure cookie
    };
    app.use(session(CONFIG, app));
    
  2. 定期更换会话ID:通过配置rollingrenew选项,可以在用户每次请求时或在会话即将过期时更换会话ID,降低被劫持的风险。

  3. 保持koa-session依赖的更新:定期检查并更新koa-session到最新版本,以确保已修复所有已知的安全漏洞。

以上措施可以显著提高koa-session的安全性,但请记得,安全是一个多层次的问题,需要综合考虑应用的其他部分。

回到顶部