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?

ted
fonte

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).

Crátilo
fonte
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.

Alain Tiemblo
fonte
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