CSRF: Sua API web utiliza cookies de sessão (enviados automaticamente pelo navegador) para autenticar usuários. Qual prática a seguir é recomendada para evitar ataques Cross-Site Request Forgery (CSRF)?

Questão

Sua API web utiliza cookies de sessão (enviados automaticamente pelo navegador) para autenticar usuários. Qual prática a seguir é recomendada para evitar ataques Cross-Site Request Forgery (CSRF)?

Alternativas

Verificar apenas o cabeçalho Referer e permitir a requisição caso ele contenha o domínio da aplicação.

Gerar e validar um token anti-CSRF único e imprevisível em cada requisição que altere estado (POST, PUT, DELETE).

97%

Aceitar somente métodos HTTP idempotentes (GET, HEAD) para todas as operações de escrita.

Exigir autenticação Basic em cada requisição, pois envia credenciais em cabeçalhos e não em cookies.

Habilitar CORS apenas para o domínio da aplicação, sem nenhuma verificação adicional.

Explicação

Em APIs que usam cookies de sessão para autenticação, o navegador envia esses cookies automaticamente em requisições para o domínio alvo. Isso permite o cenário clássico de CSRF: um site malicioso induz o usuário (já autenticado) a disparar uma requisição que altera estado (ex.: POST/PUT/DELETE) e o cookie vai junto, fazendo o servidor “acreditar” que foi uma ação legítima do usuário.

A mitigação recomendada é exigir, além do cookie, um segundo fator de verificação que o atacante não consegue forjar a partir de outro site: um token anti-CSRF (sincronizado com a sessão e imprevisível) que deve ser enviado pelo cliente (em campo de formulário ou header) e validado pelo servidor em requisições que mudam estado.

Analisando as alternativas:

  • Referer apenas: é frágil (pode faltar por políticas de privacidade/proxies e não é um controle suficientemente confiável sozinho).
  • Token anti-CSRF: prática padrão e recomendada.
  • Permitir só GET/HEAD para escrita: incorreto; além de violar semântica HTTP, não resolve o problema (o correto é não fazer escrita via GET).
  • Basic Auth: não é uma mitigação de CSRF por si só; o problema é a requisição cross-site com credenciais automáticas, e isso não é garantidamente resolvido por trocar o mecanismo.
  • CORS: não substitui proteção CSRF; CSRF pode ocorrer mesmo sem leitura da resposta pelo atacante.

Alternativa correta: (B).

Questões relacionadas

Ver últimas questões

Comece a estudar de forma inteligente hoje mesmo

Resolva questões de concursos e vestibulares com IA, gere simulados personalizados e domine os conteúdos que mais caem nas provas.

Cancele quando quiser.