Nodejs 使用 koajs/session 的同学们注意了 session 存在安全 bug
Nodejs 使用 koajs/session 的同学们注意了 session 存在安全 bug
昨天和前端一起调试程序。基于 nodejs 使用 koajs/session 处理 发现一个问题,当截断一个正常的请求时,浏览器下, session 是会失效的,但是在某些工具下,比如:burpsuite 下截断这个请求,发送给 Reperter 然后再次重放,这是 session 是不会失效的,可以重复利用。
看图 https://pic2.zhimg.com/v2-1d684361e82169238d6943e0e64369ae.png
OK 友情提示~
关于Node.js中使用koa-session存在的安全漏洞问题,确实需要引起注意。koa-session是一个流行的中间件,用于在Koa框架中管理会话(session),但如果使用不当或未及时更新,可能会引入安全风险。
一个常见的安全问题是会话劫持(Session Hijacking),这通常发生在会话ID被恶意用户获取时。为了防止这种情况,可以采取以下措施:
-
使用安全的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));
-
定期更换会话ID:通过配置
rolling
和renew
选项,可以在用户每次请求时或在会话即将过期时更换会话ID,降低被劫持的风险。 -
保持koa-session依赖的更新:定期检查并更新koa-session到最新版本,以确保已修复所有已知的安全漏洞。
以上措施可以显著提高koa-session的安全性,但请记得,安全是一个多层次的问题,需要综合考虑应用的其他部分。