Skip to main content

Configuração de segurança de cookies

Os cookies geralmente contêm identificadores de sessão ou outras informações confidenciais. O acesso não autorizado a cookies, portanto, pode causar uma série de problemas, incluindo questões de privacidade, ataques de cross-site scripting (XSS), ataques de cross-site request forgery (CSRF) e muito mais.

Solução

Para minimizar o escopo de vulnerabilidades de cookies em seu site, limite o acesso aos cookies o máximo possível. Isso pode ser feito por meio do uso sensato das seguintes diretivas do cabeçalho Set-Cookie:

Name

Os nomes dos cookies devem ser precedidos por __Secure- ou __Host- para evitar que os cookies sejam substituídos por fontes inseguras.

  • Use __Host- para todos os cookies necessários apenas em um domínio específico (sem subdomínios) onde o caminho esteja definido como /.
  • Use __Secure- para todos os outros cookies enviados de origens seguras (HTTPS).

Secure

Todos os cookies devem ser definidos com a diretiva Secure, indicando que devem ser enviados somente por HTTPS. O HTTP Strict Transport Security (HSTS) também pode ser usado para impedir a transmissão por HTTP, mas o ideal é que a diretiva Secure também seja definida nos cookies.

HttpOnly

Cookies que não exigem acesso via JavaScript devem ter a diretiva HttpOnly definida para bloquear o acesso, como em Document.cookie. É particularmente importante que os identificadores de sessão não tenham acesso via JavaScript, para ajudar a prevenir ataques como CSRF.

Expires e Max-Age

Os cookies devem expirar assim que não forem mais necessários. Os identificadores de sessão, em particular, devem expirar o mais rápido possível.

    Expires: Define uma data de expiração absoluta para um determinado cookie. Max-Age: Define uma data de expiração relativa para um determinado cookie.

    Domain

    Os cookies só devem ter um Domínio definido se precisarem ser acessíveis em outros domínios; este deve ser definido para o domínio mais restritivo possível.

    Path

    Os cookies devem ser definidos para o Caminho mais restritivo possível.

    SameSite

    Proíbe o envio de cookies por meio de solicitações entre origens (por exemplo, de elementos <img>) usando SameSite. Você deve usar um dos dois valores a seguir:

      SameSite=Strict: Envia o cookie apenas em contextos de mesmo site (navegações e outras solicitações). Os cookies são omitidos em solicitações entre sites (por exemplo, incorporação de imagens ou outros recursos de outros sites) e navegação entre sites (por exemplo, ao seguir um link de uma página diferente). Esta é uma configuração muito rigorosa, mas fornece forte proteção contra CSRF, portanto, use este valor se possível. SameSite=Lax: Envia o cookie em solicitações entre sites e ao navegar para o seu site. Este valor deve ser usado se Strict for muito restritivo.
      Ambos os valores acima são úteis na proteção contra ataques de clickjacking em casos que dependem da autenticação do usuário.