Sessões seguras em PHP: HttpOnly, Secure e SameSite

Sessões seguras em PHP: HttpOnly, Secure e SameSite

Proteger a sessão é tão importante quanto proteger a senha: se o cookie de sessão for roubado, o atacante entra como o usuário. Três flags e uma boa prática resolvem a maior parte dos riscos.

Configurando o cookie

session_set_cookie_params([
    'lifetime' => 0,
    'path'     => '/',
    'secure'   => true,   // só trafega sob HTTPS
    'httponly' => true,   // JavaScript não acessa (mitiga XSS)
    'samesite' => 'Lax',  // mitiga CSRF
]);
session_start();

HttpOnly impede que um XSS leia o cookie; Secure garante que ele só vá por HTTPS; SameSite evita que viaje em requisições de outros sites.

Regenere o ID no login

Para evitar “session fixation”, troque o ID da sessão assim que o usuário autenticar:

session_regenerate_id(true);
$_SESSION['user_id'] = $id;

Outras boas práticas

Defina um tempo de inatividade (expira após X minutos), destrua a sessão por completo no logout e use HTTPS em todo o site. Combine com proteção CSRF para fechar o cerco.

Perguntas frequentes

SameSite=Lax ou Strict?

Lax é o melhor equilíbrio para a maioria dos sites. Strict é mais seguro, mas pode atrapalhar links externos que dependem de sessão.

Onde devo guardar os dados de sessão?

Em produção com vários servidores, centralize em Redis ou banco, em vez de arquivos locais, para a sessão funcionar em todos os nós.

Continue lendo

Procurando uma agência especialista em segurança para WordPress?

O Site Seguro é especialista 100% em segurança WordPress, com SLA, garantia contra reincidência e atendimento humano no Brasil.

Conhecer nosso serviço →
Fale conosco