Um cookie, no âmbito do protocolo de comunicação HTTP usado na Internet, é um pequeno arquivo de computador[1] ou pacote de dados enviados por um site de Internet para o navegador do usuário, quando o utilizador visita o site. Cada vez que o usuário visita o site novamente, o navegador envia o cookie de volta para o servidor para notificar atividades prévias do usuário. Os cookies foram concebidos para serem um mecanismo confiável para que sítios se lembrem de informações da atividade do usuário,[1] como senhas gravadas, itens adicionados no carrinho de compras em uma loja online, hiperligações que foram clicadas anteriormente, entre outros. Assim, melhoram a navegação, aumentando a eficiência da busca.[1]
O inventor dos Cookies
[2]Em junho de 1994, o Engenheiro de Software da Netscape, Lou Montulli, inventou os cookies HTTP. E juntamente com ajuda do seu colega John Giannandrea, introduziu a tecnologia no Netscape, no mesmo ano. Montulli deu entrada ao pedido de patente para a tecnologia em 1995, e a patente foi concedida em 1998.
Funcionamento
- Quando o servidor deseja activar um cookie no cliente, envia uma linha no cabeçalho HTTP iniciada por Set-Cookie: ...
- A partir desse momento, consoante as opções especificadas pelo cookie, o cliente irá enviar no seu cabeçalho HTTP dos pedidos uma linha contendo os cookies relevantes, iniciada por Cookie: ....
Entre os parâmetros dos cookies estão: o tempo de vida (a data para o cookie "expirar a validade") e o domínio, ou grupo de páginas a que o cookie se aplica. Por exemplo, é possível fazer com que um cookie seja aplicado apenas a endereços iniciados por de maneira que esse mesmo cookie já não se aplique para skins, por exemplo.
Se não especificada a data de validade para o cookie, ele irá expirar assim que o usuário fechar o navegador.
Em JavaScript (embutido no HTML da página acessada), podemos criar um script para manipulá-los. Utilizamos "document.cookie" (sem aspas). Em ASP, podemos utilizar cookies por meio dos objetos Response e Request. Em PHP, os cookies são tratados por meio da função setcookie(). Esta deverá vir antes de qualquer dado ser enviado ao navegador, devido ao fato de os cookies fazerem parte do cabeçalho HTTP.
Parâmetros de segurança do cookie
Secure
Instrui o navegador para nunca enviar o cookie sob uma requisição HTTP sem que esta esteja em um canal de comunicação cifrado. O cookie só pode ser enviado através de HTTPS. Isso funciona mesmo se o usuário digitar manualmente um pedido de HTTP. A solicitação HTTP será enviada, mas o navegador não enviará quaisquer cookies marcados como "seguro". Esta medida visa minimizar o cenário no qual um usuário malicioso induz a vítima a realizar uma requisição HTTP, o que poderá permitir a captura do cookie de sessão da vítima. Tal captura pode ser feita através de ferramentas que analisam o tráfego de rede, como sniffers ou através do log de acesso da aplicação.
Exemplo do HTTP Response: |
---|
Set-Cookie: sessiondID=xpto123; secure; |
HttpOnly
Dentre os atributos presentes nos cookies, o HttpOnly lida com a permissividade, desta forma, caso esteja habilitado em determinado cookie, este não poderá ser manipulado por códigos client-side como JavaScript, VBscript, etc. Atribuir o parâmetro HttpOnly a um determinado cookie visa dificultar ataques de Cross-Site Scripting, cujo objetivo é realizar sequestro de sessão ou aqueles que visam alterar valores de cookies preestabelecidos.
O atributo HttpOnly é suportado pela maioria dos navegadores modernos. Se o navegador não suportar a flag, ela será ignorada e com isso a mesma fica vulnerável e pode ser alterado por código malicioso.
Exemplo do HTTP Response: |
---|
Set-Cookie: sessiondID=xpto123; HttpOnly; |
Path
O atributo path instrui o browser a enviar o cookie apenas para o domínio especificado e a todos subdomínios. Se o atributo for definido por padrão como a raiz ("/") do website — pode provocar alguns riscos adicionais à segurança desta aplicação, pois não haverá restrições de envio de cookies para outras aplicações que eventualmente estejam hospedadas em outros diretórios do mesmo servidor web.
Por exemplo, suponha-se que existem duas aplicações no mesmo servidor em pastas distintas, uma em /site1/ e outra em /site2/. O fato de não restringir o escopo do cookie a uma aplicação, fará com que o cookie desta seja acessível para ambas as aplicações.
Exemplo do HTTP Response: |
---|
Set-Cookie: sessiondID=xpto123; Domain=.site.com; Path=/site1; |
Referências
- ↑ 1,0 1,1 1,2 cookie in Dicionário infopédia da Língua Portuguesa com Acordo Ortográfico [em linha]. Porto: Porto Editora, 2003-2018. [consult. 2018-01-10 13:33:42]. Disponível na Internet: https://www.infopedia.pt/dicionarios/lingua-portuguesa/cookie
- ↑ «Louis Montulli II Invents the HTTP Cookie». https://www.historyofinformation.com/
Ligações externas
- A especificação preliminar emitida pela Netscape
- RFC 2965 - HTTP State Management Mechanism - especificação actual, que torna o RFC 2109 obsoleto.
- Protecting Your Cookies: HttpOnly
- https://www.owasp.org/index.php/HttpOnly
- Mitigating Cross-site Scripting With HTTP-only Cookies
- understanding HTTP only and Secure cookies
- browserscope
- Cookies de rastreamento ameaçam sua privacidade - Michell Hilton.