As flags de cookie Secure, HttpOnly e SameSite
Os cookies de sessão são um alvo e tanto. Três atributos — Secure, HttpOnly e SameSite — determinam se um atacante consegue roubá-los ou usá-los de forma indevida. A falta de flags leva direto ao sequestro de sessão e a CSRF.
O que é
Secure envia o cookie só por HTTPS. HttpOnly o esconde do JavaScript (document.cookie). SameSite controla se ele é enviado em requisições entre sites.
Juntos, eles reduzem a superfície de ataque: um atacante não consegue ler o cookie por um script injetado, não consegue capturá-lo por HTTP e não consegue se aproveitar dele a partir de outro site.
Por que importa
Sem HttpOnly, qualquer falha de XSS pode ler o cookie de sessão e entregar ao atacante uma sessão logada. Sem Secure, o cookie vaza em qualquer requisição HTTP pura.
Sem SameSite, o navegador anexa o cookie a requisições entre sites, que é o mecanismo do qual os ataques CSRF dependem.
Como corrigir
A maioria dos frameworks expõe isso como opções na hora de definir o cookie.
res.cookie("session", token, {
secure: true,
httpOnly: true,
sameSite: "lax", // or "strict" for maximum protection
path: "/",
});Nomear um cookie com __Host- força o navegador a exigir Secure, Path=/ e nenhum Domain — uma base sólida e autoaplicável para os cookies de sessão.
Se você realmente precisa de cookies entre sites, SameSite=None só é respeitado quando Secure também está definido; caso contrário, os navegadores modernos descartam o cookie.
FAQ
Lax ou Strict para o SameSite?
Lax é um padrão seguro que ainda permite as navegações de nível superior. Strict é mais rígido, mas pode quebrar fluxos em que os usuários chegam por links externos esperando estar logados.
Essas flags impedem o XSS?
O HttpOnly limita o dano do XSS ao esconder o cookie, mas não impede o XSS. Combine-o com uma Content-Security-Policy forte.
Seu app está afetado?
O AppSafe verifica isso e dezenas de outros problemas em um único escaneamento grátis.
Escanear meu app grátisGuias relacionados
Content-Security-Policy (CSP): o que é e como adicionar uma
O cabeçalho que impede a execução de scripts injetados.
CORS mal configurado: as armadilhas do curinga e do reflexo
Permita toda origem e qualquer site poderá ler sua API.
Por que seu site precisa de um redirecionamento HTTP→HTTPS
Não deixe a porta insegura aberta.