Enhancing Node.js Applications with Sessions and Cookies

Understand how to manage user sessions and cookies to build stateful applications in Node.js.

0 likes
4 views

Rule Content

{
  "title": "Enhancing Node.js Applications with Sessions and Cookies",
  "description": "Understand how to manage user sessions and cookies to build stateful applications in Node.js.",
  "category": "Node.js Cursor Rules",
  "rules": [
    {
      "id": "nodejs-session-cookie-management",
      "description": "Ensure secure and efficient management of user sessions and cookies in Node.js applications.",
      "severity": "error",
      "patterns": [
        {
          "pattern": "app.use\\(session\\(\\{[^}]*\\}\\)\\);",
          "message": "Ensure that session middleware is configured with secure options, including 'secret', 'resave', 'saveUninitialized', and 'cookie' settings."
        },
        {
          "pattern": "cookie:\\s*\\{[^}]*\\}",
          "message": "Configure session cookies with 'secure', 'httpOnly', and 'sameSite' attributes to enhance security."
        },
        {
          "pattern": "res.cookie\\([^,]+,\\s*[^,]+,\\s*\\{[^}]*\\}\\);",
          "message": "Set cookies with 'secure', 'httpOnly', and 'sameSite' attributes to prevent security vulnerabilities."
        },
        {
          "pattern": "req.session.regenerate\\(function\\(err\\)\\s*\\{[^}]*\\}\\);",
          "message": "Regenerate session IDs after authentication to prevent session fixation attacks."
        },
        {
          "pattern": "req.session.destroy\\(function\\(err\\)\\s*\\{[^}]*\\}\\);",
          "message": "Destroy sessions upon user logout to prevent unauthorized access."
        }
      ],
      "examples": [
        {
          "code": "app.use(session({ secret: 'your-secret-key', resave: false, saveUninitialized: true, cookie: { secure: true, httpOnly: true, sameSite: 'strict' } }));",
          "description": "Correct: Secure session middleware configuration."
        },
        {
          "code": "res.cookie('sessionId', 'abc123', { secure: true, httpOnly: true, sameSite: 'strict' });",
          "description": "Correct: Secure cookie setting."
        },
        {
          "code": "req.session.regenerate(function(err) { if (err) return next(err); // continue with request });",
          "description": "Correct: Regenerating session ID after authentication."
        },
        {
          "code": "req.session.destroy(function(err) { if (err) return next(err); // continue with request });",
          "description": "Correct: Destroying session upon user logout."
        }
      ]
    }
  ]
}