Introdução
Em aplicações que utilizam múltiplos subdomínios, como app.exemplo.com
e painel.exemplo.com
, pode ser necessário compartilhar cookies entre eles para manter a autenticação do usuário ou suas preferências. No PHP, isso pode ser feito configurando corretamente o domínio do cookie.
Como configurar cookies para serem compartilhados entre subdomínios
Para permitir que um cookie seja acessível em diferentes subdomínios, precisamos definir o parâmetro domain
corretamente:
setcookie('usuario', 'João', [
'expires' => time() + 3600,
'path' => '/',
'domain' => '.exemplo.com',
'secure' => true,
'httponly' => true,
'samesite' => 'None'
]);
Explicação do código:
domain => '.exemplo.com'
: Define que o cookie será acessível por todos os subdomínios deexemplo.com
.path => '/'
: Permite que o cookie seja acessado em qualquer página do site.secure => true
: Garante que o cookie só será transmitido por HTTPS.httponly => true
: Impede que o cookie seja acessível via JavaScript, protegendo contra ataques XSS.samesite => 'None'
: Necessário para permitir o compartilhamento do cookie entre subdomínios em navegadores modernos.
Verificando se o cookie está disponível em outro subdomínio
Após definir o cookie, podemos acessá-lo em qualquer subdomínio da seguinte maneira:
if (isset($_COOKIE['usuario'])) {
echo 'Usuário: ' . $_COOKIE['usuario'];
} else {
echo 'Cookie não encontrado!';
}
Se o cookie foi configurado corretamente, ele estará acessível em todos os subdomínios de exemplo.com
.
Problemas comuns ao compartilhar cookies entre subdomínios
- Cookies não sendo compartilhados: Certifique-se de que o atributo
domain
foi configurado corretamente com um ponto (.
) antes do domínio. - Cookies não persistindo em navegadores modernos: O atributo
SameSite=None
é necessário para permitir o compartilhamento de cookies entre subdomínios. - Cookies não sendo enviados por HTTP: Verifique se o site está utilizando HTTPS, pois
secure=true
impede que o cookie seja transmitido em conexões HTTP inseguras.
Conclusão
Configurar corretamente os cookies no PHP para serem compartilhados entre subdomínios melhora a experiência do usuário e facilita a autenticação única entre diferentes áreas de um site. Com a configuração adequada dos parâmetros de segurança, garantimos um ambiente protegido e funcional.
Por que compartilhar cookies entre subdomínios no PHP é essencial?
O compartilhamento de cookies entre subdomínios é uma técnica essencial para aplicações que precisam oferecer uma experiência unificada ao usuário. Sistemas como plataformas SaaS, painéis administrativos e lojas virtuais frequentemente dividem suas funcionalidades em subdomínios distintos, tornando a persistência de login e preferências um fator importante.
Sem uma configuração correta dos cookies, o usuário pode ser forçado a se autenticar novamente ao alternar entre subdomínios, o que prejudica a usabilidade. Além disso, garantir que os cookies sejam seguros é fundamental para evitar vazamento de dados e vulnerabilidades como ataques de interceptação (man-in-the-middle).
O uso dos atributos Secure
, HttpOnly
e SameSite
é uma prática recomendada para reforçar a segurança dos cookies e garantir compatibilidade com os padrões mais recentes dos navegadores. Testar a configuração em diferentes navegadores e dispositivos é essencial para evitar falhas na autenticação entre subdomínios.
Algumas aplicações:
- Manter o usuário autenticado ao navegar entre diferentes subdomínios.
- Armazenar preferências do usuário em um único local e acessá-las em diferentes serviços.
- Facilitar a comunicação entre áreas distintas de uma aplicação web.
- Reduzir a necessidade de reautenticação ao alternar entre subdomínios.
Dicas para quem está começando
- Defina o
domain
com um ponto (.
) antes do domínio para permitir o compartilhamento entre subdomínios. - Use
SameSite=None
para compatibilidade com navegadores modernos. - Certifique-se de que o site está rodando em HTTPS para evitar problemas com
secure=true
. - Verifique os cookies no navegador utilizando a aba de desenvolvedor (DevTools) para confirmar se foram armazenados corretamente.
- Evite armazenar informações sensíveis diretamente em cookies, prefira armazenar identificadores e buscar os dados no servidor.
Contribuições de Carla Mendes