Tips & Tricks

Como Implementar Gerenciamento de Cookies e Sessões com Claude Code

Aprenda a implementar gerenciamento de cookies e sessões usando o Claude Code. Inclui exemplos práticos de código e orientação passo a passo.

A Importância do Gerenciamento de Cookies

Cookies são a base da autenticação de usuários e gerenciamento de sessões, mas erros de configuração de segurança podem levar a vulnerabilidades graves. Com o Claude Code, você pode implementar corretamente mecanismos seguros de gerenciamento de cookies.

Utilitário de Operação Segura de Cookies

> Crie um utilitário de operação de cookies com configurações de segurança.
> Torne obrigatórias as configurações HttpOnly, Secure e SameSite.
interface CookieOptions {
  maxAge?: number;
  path?: string;
  domain?: string;
  secure?: boolean;
  httpOnly?: boolean;
  sameSite?: 'strict' | 'lax' | 'none';
}

const DEFAULT_OPTIONS: CookieOptions = {
  path: '/',
  secure: true,
  httpOnly: true,
  sameSite: 'lax',
  maxAge: 86400, // 1 dia
};

class CookieManager {
  static set(name: string, value: string, options: CookieOptions = {}) {
    const opts = { ...DEFAULT_OPTIONS, ...options };
    const parts = [`${encodeURIComponent(name)}=${encodeURIComponent(value)}`];

    if (opts.maxAge) parts.push(`Max-Age=${opts.maxAge}`);
    if (opts.path) parts.push(`Path=${opts.path}`);
    if (opts.domain) parts.push(`Domain=${opts.domain}`);
    if (opts.secure) parts.push('Secure');
    if (opts.httpOnly) parts.push('HttpOnly');
    if (opts.sameSite) parts.push(`SameSite=${opts.sameSite}`);

    return parts.join('; ');
  }

  static parse(cookieHeader: string): Record<string, string> {
    return cookieHeader.split(';').reduce((acc, pair) => {
      const [key, ...vals] = pair.trim().split('=');
      if (key) acc[decodeURIComponent(key)] = decodeURIComponent(vals.join('='));
      return acc;
    }, {} as Record<string, string>);
  }

  static delete(name: string, path = '/') {
    return this.set(name, '', { maxAge: 0, path });
  }
}

Gerenciamento de Sessão com Express

> Implemente gerenciamento seguro de sessão com Express.
> Use Redis como session store e inclua proteção CSRF.
import session from 'express-session';
import RedisStore from 'connect-redis';
import { createClient } from 'redis';
import csrf from 'csurf';

const redisClient = createClient({ url: process.env.REDIS_URL });
redisClient.connect();

const sessionConfig: session.SessionOptions = {
  store: new RedisStore({ client: redisClient }),
  secret: process.env.SESSION_SECRET!,
  name: '__session',
  resave: false,
  saveUninitialized: false,
  cookie: {
    secure: process.env.NODE_ENV === 'production',
    httpOnly: true,
    sameSite: 'lax',
    maxAge: 24 * 60 * 60 * 1000, // 24 horas
  },
};

app.use(session(sessionConfig));
app.use(csrf({ cookie: false })); // CSRF baseado em sessão

Operação Segura de Cookies no Lado do Cliente

Também é possível gerar com o Claude Code o gerenciamento de cookies operados no navegador (não HttpOnly).

// Utilitário de cookies do lado do cliente (para informações não sensíveis como tema e idioma)
export const clientCookie = {
  get(name: string): string | null {
    const match = document.cookie.match(new RegExp(`(?:^|; )${name}=([^;]*)`));
    return match ? decodeURIComponent(match[1]) : null;
  },

  set(name: string, value: string, days = 365) {
    const expires = new Date(Date.now() + days * 864e5).toUTCString();
    document.cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)};expires=${expires};path=/;SameSite=Lax`;
  },

  remove(name: string) {
    document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`;
  },
};

// Exemplo de uso: salvar configuração de tema
clientCookie.set('theme', 'dark');
const theme = clientCookie.get('theme'); // 'dark'

Reforço de Segurança da Sessão

// Prevenção de ataque de fixação de sessão
app.post('/login', async (req, res) => {
  const user = await authenticate(req.body);

  // Regenerar ID de sessão ao fazer login com sucesso
  req.session.regenerate((err) => {
    if (err) return res.status(500).json({ error: 'Erro de sessão' });
    req.session.userId = user.id;
    res.json({ success: true });
  });
});

Resumo

Com o Claude Code, você pode implementar de forma consistente desde configurações seguras de cookies até gerenciamento de sessões e proteção CSRF. Para autenticação em geral, consulte o Guia de Implementação de Autenticação, e para comparação com autenticação JWT, consulte o artigo sobre Autenticação JWT. Para detalhes de segurança, consulte também Auditoria de Segurança.

Para melhores práticas de gerenciamento de sessão, consulte OWASP Session Management.

#Claude Code #Cookie #session #security #TypeScript