Segurança de Cookies: Secure, HttpOnly e SameSite explicados
Os cookies são utilizados por praticamente todos os sites modernos para manter sessões, preferências e autenticação. Neste artigo explicamos como os atributos Secure, HttpOnly e SameSite ajudam a proteger os cookies contra roubo de sessão, ataques XSS e pedidos maliciosos.
O que são cookies de segurança
Um cookie é uma pequena informação armazenada pelo navegador e enviada posteriormente ao servidor em novos pedidos.
Os cookies podem guardar preferências, identificadores de sessão ou dados relacionados com autenticação. Quando contêm informação sensível, devem ser configurados com atributos que limitem a forma como podem ser transmitidos e utilizados.
Os principais atributos utilizados para reforçar a segurança dos cookies são Secure, HttpOnly e SameSite.
Porque é importante
Um cookie de sessão mal configurado pode aumentar o risco de roubo de sessão, acesso não autorizado a uma conta ou utilização indevida de credenciais de autenticação.
Os atributos de segurança permitem limitar estes riscos, impedindo, por exemplo, que determinados cookies sejam enviados através de ligações não seguras ou acedidos diretamente por JavaScript.
Uma configuração incorreta dos cookies não significa automaticamente que um site tenha sido comprometido, mas pode aumentar a exposição a determinados tipos de ataque.
O atributo Secure
O atributo Secure indica ao navegador que o cookie só deve ser enviado através de uma ligação HTTPS.
Por exemplo:
Set-Cookie: session=abc123; Secure
Sem este atributo, um cookie pode, em determinadas situações, ser enviado através de uma ligação HTTP não encriptada.
Cookies utilizados para autenticação, sessões de utilizador ou outras funções sensíveis devem normalmente utilizar Secure.
O atributo HttpOnly
O atributo HttpOnly impede que o cookie seja acedido através de JavaScript executado no navegador.
Por exemplo:
Set-Cookie: session=abc123; HttpOnly
Este atributo é particularmente importante para cookies de sessão, porque pode dificultar o roubo do seu conteúdo através de determinados ataques de Cross-Site Scripting (XSS).
O HttpOnly não impede um ataque XSS por si só, mas reduz a possibilidade de código JavaScript malicioso obter diretamente o valor do cookie.
O atributo SameSite
O atributo SameSite controla em que circunstâncias um cookie pode ser enviado quando o pedido é iniciado a partir de outro site.
Este atributo ajuda a reduzir o risco de ataques Cross-Site Request Forgery (CSRF).
Existem três valores principais:
- Strict: o cookie é enviado apenas em contextos do próprio site, oferecendo maior restrição.
- Lax: permite alguns pedidos originados noutros sites, mantendo uma proteção razoável contra CSRF. É uma opção adequada para muitos casos.
- None: permite o envio do cookie em contextos entre sites. Quando utilizado, deve ser combinado com o atributo
Secure.
Exemplo:
Set-Cookie: session=abc123; Secure; HttpOnly; SameSite=Lax
Segurança de cookies e consentimento não são a mesma coisa
A segurança de cookies e o consentimento relacionado com privacidade são questões diferentes.
Os atributos Secure, HttpOnly e SameSite destinam-se a proteger tecnicamente a utilização dos cookies.
Já a utilização de cookies para publicidade, estatísticas ou outras finalidades pode estar sujeita a requisitos legais de consentimento e proteção de dados.
Um cookie pode, portanto, estar tecnicamente bem protegido e ainda assim necessitar de consentimento do utilizador, dependendo da sua finalidade.
Boas práticas
- Utilizar
Secureem cookies que contenham informação sensível ou estejam relacionados com autenticação. - Utilizar
HttpOnlyem cookies de sessão sempre que não seja necessário aceder ao seu conteúdo através de JavaScript. - Definir explicitamente um valor adequado para
SameSite. - Evitar utilizar
SameSite=Nonesem necessidade. - Quando utilizar
SameSite=None, combinar sempre comSecure. - Não armazenar passwords ou outros dados altamente sensíveis diretamente em cookies.
- Utilizar tempos de expiração adequados e evitar manter sessões válidas durante períodos desnecessariamente longos.
- Rever periodicamente os cookies definidos pelo próprio site e por aplicações ou extensões instaladas.
Como corrigir
- Identifique quais os cookies utilizados para autenticação, sessões ou outras funções sensíveis.
- Confirme que esses cookies incluem o atributo
Securequando o site utiliza HTTPS. - Adicione
HttpOnlyaos cookies que não precisam de ser lidos através de JavaScript. - Defina um valor adequado para
SameSite, normalmenteLaxouStrict, dependendo do funcionamento do site. - Se algum cookie necessitar de
SameSite=None, confirme que também utilizaSecure. - Teste cuidadosamente processos de login, pagamentos, integrações externas e autenticação depois de alterar as definições.
Segurança de cookies no WordPress
O WordPress utiliza cookies para autenticação, administração, preferências e outras funcionalidades.
Além dos cookies definidos pelo próprio WordPress, plugins, temas, sistemas de cache, plataformas de comércio eletrónico e serviços externos podem criar os seus próprios cookies.
Por esse motivo, a análise deve abranger todos os cookies definidos pelo site e não apenas os cookies nativos do WordPress.
Antes de alterar manualmente atributos de cookies, é importante perceber que alguns plugins e integrações dependem de configurações específicas. Uma alteração inadequada pode interferir com processos de autenticação, pagamentos ou serviços externos.
Erros comuns na configuração de cookies
- Cookies de sessão sem o atributo
Secure. - Cookies de autenticação acessíveis através de JavaScript sem necessidade.
- Não definir explicitamente o atributo
SameSite. - Utilizar
SameSite=Nonesem o atributoSecure. - Guardar informação sensível diretamente no conteúdo do cookie.
- Utilizar cookies de sessão com períodos de validade excessivamente longos.
- Alterar a configuração sem testar logins, pagamentos ou integrações externas.
Um certificado SSL não garante, por si só, que todos os cookies estejam corretamente protegidos – é também necessário configurar os atributos adequados para cada cookie utilizado pelo site.
Na WebDig Host, utilizamos boas práticas de segurança e configurações modernas de servidor para ajudar a proteger os sites alojados na nossa infraestrutura.
Perguntas frequentes sobre segurança de cookies
O que significa Secure num cookie?
O atributo Secure indica ao navegador que o cookie só deve ser enviado através de uma ligação HTTPS.
O que significa HttpOnly?
O atributo HttpOnly impede que o valor do cookie seja acedido diretamente através de JavaScript no navegador, reduzindo o risco de roubo do cookie em determinados ataques XSS.
Qual o melhor valor para SameSite?
Depende do funcionamento do site. SameSite=Lax é adequado para muitos casos, enquanto Strict oferece maior restrição. None deve ser utilizado apenas quando é necessário permitir cookies entre sites e deve ser combinado com Secure.
Todos os cookies devem ter HttpOnly?
Não. Alguns cookies precisam de ser lidos por JavaScript para determinadas funcionalidades. O atributo deve ser utilizado especialmente em cookies de sessão e autenticação que não necessitem desse acesso.
Um cookie sem Secure significa que o site foi atacado?
Não. Significa apenas que esse cookie não está configurado para ser enviado exclusivamente através de HTTPS. O risco depende do tipo de cookie, da informação que contém e da forma como é utilizado.
Segurança de cookies é o mesmo que consentimento de cookies?
Não. Os atributos Secure, HttpOnly e SameSite estão relacionados com segurança técnica. O consentimento está relacionado com privacidade, proteção de dados e a finalidade para a qual determinados cookies são utilizados.
Verifique agora a segurança dos cookies do seu site
Com o Secure Check, pode analisar gratuitamente os cookies utilizados pelo seu site e identificar configurações que podem reduzir a sua segurança, em poucos segundos.
