Communitygithub.com

Proteção CSRF

Proteção contra CSRF — cookies SameSite, padrão de submissão dupla, validação de token.

O que é Proteção CSRF?

Esta skill oferece diretrizes e implementações de referência para proteger aplicações web contra ataques CSRF (Cross-Site Request Forgery). Ela cobre as principais estratégias de mitigação: configurar cookies com `SameSite=Lax` (ou `Strict` para ações sensíveis), implementar o padrão de submissão dupla (token CSRF no cookie + cabeçalho da requisição) para APIs customizadas, e incluir tokens CSRF em formulários HTML. Também recomenda verificar os cabeçalhos `Origin` e `Referer` como defesa em profundidade, e destaca que frameworks modernos como Next.js (Server Actions) e SvelteKit tratam CSRF automaticamente. Para SPAs, a abordagem recomendada é enviar o token em um cabeçalho customizado (`X-CSRF-Token`), já que navegadores bloqueiam cabeçalhos customizados em requisições cross-origin por padrão. A skill inclui um exemplo de código prático em TypeScript/Node.js que gera e valida tokens usando o padrão de submissão dupla e criptografia segura. Além disso, lista práticas a serem evitadas, como depender exclusivamente de autenticação baseada em cookie sem proteção CSRF, usar tokens que nunca rotacionam, realizar mutações de estado via GET, ou desabilitar proteção CSRF em APIs que utilizam cookies. O objetivo é fornecer uma base sólida e acionável para desenvolvedores que trabalham com qualquer plataforma web moderna, garantindo que suas aplicações estejam protegidas contra uma das vulnerabilidades mais comuns em aplicações web.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YepAPI/skills/tree/HEAD/skills/csrf-protection

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Proteção CSRF faz?

Regras

  • Defina SameSite=Lax em todos os cookies — isso bloqueia a maioria dos ataques CSRF por padrão
  • Use SameSite=Strict para ações altamente sensíveis (exclusão de conta, alteração de senha)
  • Implemente o padrão de submissão dupla de cookie para APIs customizadas: token CSRF no cookie + cabeçalho da requisição
  • Inclua tokens CSRF em todos os formulários HTML que realizam ações de alteração de estado
  • Verifique os cabeçalhos Origin e Referer em requisições de alteração de estado como defesa em profundidade
  • Next.js Server Actions e SvelteKit form actions tratam CSRF automaticamente — utilize-os
  • Para SPAs: envie o token CSRF em um cabeçalho customizado (X-CSRF-Token) — navegadores bloqueiam cabeçalhos customizados cross-origin por padrão
// Padrão de submissão dupla de cookie
import crypto from "crypto";

function generateCsrfToken(res) {
  const token = crypto.randomBytes(32).toString("hex");
  res.cookie("csrf_token", token, { httpOnly: false, sameSite: "strict", secure: true });
  return token;
}

function verifyCsrf(req) {
  const cookieToken = req.cookies.csrf_token;
  const headerToken = req.headers["x-csrf-token"];
  if (!cookieToken || cookieToken !== headerToken) {
    throw new Error("Falha na validação CSRF");
  }
}

Evite

  • Confiar apenas em autenticação baseada em cookie sem proteção CSRF — qualquer site pode enviar formulários para seus endpoints
  • Tokens CSRF que nunca rotacionam — um token vazado compromete todas as requisições futuras
  • Requisições GET que alteram estado — a proteção CSRF só funciona em POST/PUT/DELETE porque requisições GET ignoram SameSite=Lax
  • Desabilitar a proteção CSRF porque "é apenas uma API" — se cookies estão envolvidos, CSRF se aplica

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

YepAPI/skills

WCAG 2.1 AA — semantic HTML, keyboard navigation, screen readers.

YepAPI/skills

Experiment setup, variant splitting, statistical significance, and feature flag integration.

YepAPI/skills

CRUD generators, data tables, user management, role-based access, and bulk operations.

YepAPI/skills

Monitor what ChatGPT and Gemini say about your brand using YepAPI.

YepAPI/skills

Queue workers with BullMQ/Inngest/Trigger.dev, job retries, dead letter queues, concurrency.

YepAPI/skills

Commander.js, interactive prompts with Clack, spinners, colors, config files, exit codes, and npm publishing.

YepAPI/skills

cmdk integration, Cmd+K trigger, fuzzy search, grouped actions, keyboard navigation, and dynamic action registration.

YepAPI/skills

Content planning with trend and sentiment data from YepAPI.

YepAPI/skills

Content calendar, keyword-driven planning, and content briefs.

YepAPI/skills

Theme switching with CSS variables, system preference detection, next-themes, and persistence.

YepAPI/skills

Threaded comments, @mentions, reactions, moderation queue, optimistic UI, and cursor pagination.

YepAPI/skills

Competitive analysis between domains using YepAPI.

YepAPI/skills

Layout grids, KPI cards, data tables with sorting/filtering, sidebar navigation, and responsive breakpoints.

YepAPI/skills

Data encryption — TLS everywhere, AES-256-GCM for PII, bcrypt passwords, encrypted backups.

YepAPI/skills

Chart patterns with Recharts/Nivo/D3, responsive containers, color scales, and accessibility.

YepAPI/skills

Drizzle schema definition, push vs migrate, type-safe queries, relations, transactions, and prepared statements.

YepAPI/skills

Upload handling, resize/compress, CDN delivery, blur placeholders, and next/image patterns.

YepAPI/skills

Local business and Google Maps research using YepAPI.

YepAPI/skills

Cursor-based pagination, IntersectionObserver, virtualized lists with @tanstack/react-virtual, and scroll position restoration.

YepAPI/skills

Chat UI components, streaming responses with AI SDK, context window management, and RAG patterns.

Habilidades Relacionadas