Como funciona a sinalização de cookie “Seguro”?


101

Sei que um cookie com securesinalizador não será enviado por meio de uma conexão não criptografada. Eu me pergunto como isso funciona em profundidade.

Quem é o responsável por determinar se o cookie será enviado ou não?

Respostas:


91

O cliente define isso apenas para conexões criptografadas e isso é definido no RFC 6265 :

O atributo Secure limita o escopo do cookie a canais "seguros" (onde "seguro" é definido pelo agente do usuário). Quando um cookie tem o atributo Seguro, o agente do usuário incluirá o cookie em uma solicitação HTTP apenas se a solicitação for transmitida por um canal seguro (geralmente HTTP sobre Segurança da Camada de Transporte (TLS) [RFC2818]).

Embora aparentemente útil para proteger cookies de invasores de rede ativos, o atributo Secure protege apenas a confidencialidade do cookie. Um invasor de rede ativo pode sobrescrever cookies seguros de um canal não seguro, interrompendo sua integridade (consulte a Seção 8.6 para obter mais detalhes).


4
Caso o lado do cliente ainda não tenha cookies e eles devam ser enviados do lado do servidor (por exemplo, fazendo login), será o lado do servidor que decidirá incluir o cookie na resposta?
ted

3
O servidor inicialmente define os cookies por meio de "Set-Cookie headers"
Ivan

49

Só mais uma palavra sobre o assunto:

Omitir secureporque seu site example.comé totalmente https não é suficiente.

Se o seu usuário estiver acessando explicitamente http://example.com, ele será redirecionado para, https://example.commas já é tarde demais; a primeira solicitação continha o cookie.


6
Eu sei que isso é antigo, mas a pré-carga do HSTS ajuda nessa situação, evitando que esse problema ocorra com frequência. Ainda não é 100% corrigido, mas é apenas outra coisa a considerar se você realmente deseja evitar cookies seguros.
Sr. MonoChrome

5
@ Mr.MonoChrome Por que você deseja evitar cookies seguros?
MEMark de

@ Mr.MonoChrome embora alguns navegadores de especificações mais antigas ou mais baixas, eu acredito, nem mesmo suportam HSTS
oldboy

1
Bom ponto. Para aplicativos .NET, é melhor fazer o redirecionamento no IIS (ou web.config) em vez de programaticamente (por exemplo globals.asax)
piris

Portanto, se você não estivesse redirecionando de http para https e servindo apenas em https, não seria necessário secure?
freios de
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.