Pular para o conteúdo
Todos os conceitos

Segurança nos cabeçalhos

A resposta HTTP controla boa parte da defesa pelos cabeçalhos: CORS, cookie e proteções.

Boa parte da segurança de um site não está no corpo da resposta, e sim nos cabeçalhos que acompanham cada resposta HTTP. O navegador obedece a esses cabeçalhos, então configurá-los errado (ou esquecê-los) abre ataques sem que uma única linha do seu código esteja com bug.

Dois casos aparecem nesta trilha:

  • CORS: Access-Control-Allow-Origin diz qual site pode ler suas respostas por JavaScript. Repetir cegamente a origem recebida (aceitar qualquer uma) e ainda marcar Access-Control-Allow-Credentials: true deixa um site malicioso ler os dados autenticados da vítima.
  • Cookie e proteções: o Set-Cookie de uma sessão deveria trazer HttpOnly (esconde do JavaScript, então um XSS não rouba a sessão), Secure (só por HTTPS) e SameSite (limita o uso entre sites). Faltar HttpOnly deixa document.cookie ler o cookie.
site do atacante shady.test API da vítima fetch /api/me, com cookie HTTP/1.1 200 OK Access-Control-Allow-Origin: shady.test Access-Control-Allow-Credentials: true {"api_key": "tocaia{...}"} reflete a origem + credenciais o atacante lê a resposta origem fixa barraria o acesso
O mesmo pedido com uma política estreita é barrado, e com CORS frouxo ou sem HttpOnly a resposta autenticada vaza para o site do atacante.

A defesa é permitir só origens confiáveis no CORS (nunca repetir o Origin), marcar HttpOnly, Secure e SameSite nos cookies de sessão, e enviar os cabeçalhos de proteção (Content-Security-Policy, X-Content-Type-Options: nosniff, Strict-Transport-Security). São ajustes de configuração, não de código.

Aparece nestes desafios