Web11: Cookies HTTP e alguns problemas de segurança

1. Introdução

Cookie , ou cookie HTTP, cookie da web, cookie do navegador é um pequeno dado enviado do site e armazenado no navegador do usuário quando ele navega neste site. Cada vez que um usuário carrega um site, o navegador envia automaticamente cookies ao servidor web para notificar o site sobre as ações anteriores do usuário.

Os cookies são projetados para serem um mecanismo confiável que ajuda os sites a lembrar informações de status (como itens no carrinho de compras) ou armazenar atividades do usuário (incluindo cliques), um link, login, páginas visitadas durante a semana, mês ou ano,... ).

Embora os cookies não possam transportar vírus, nem instalar malware no seu computador, o uso de cookies de rastreamento e principalmente de terceiros é considerado uma forma de identificar informações pessoais do histórico de navegação dos usuários. Os cookies podem salvar senhas ou conteúdo que os usuários inserem em formulários HTML, como números de cartão de crédito ou endereços pessoais.

Quando um utilizador visita um site pela primeira vez, um cookie é enviado do servidor web para o navegador e armazenado no seu computador. Então, quando ele retornar ao site, o site irá reconhecê-lo pelas informações salvas no cookie.

Cookies de autenticação são um método comum usado para determinar se um usuário está conectado a um site ou não. Sem esse mecanismo, será difícil para o site saber quando enviar informações pessoais ao usuário e forçar o usuário a fazer login várias vezes. Os cookies de autenticação, embora muito convenientes, criam oportunidades para os hackers lerem dados sensíveis nos cookies, realizando assim ações que prejudicam os utilizadores.

2. Visão geral dos cookies HTTP

2.1. História

O termo cookie é derivado do termo cookie mágico, que é um dado imutável enviado e recebido por um programa de computador. Um programador chamado Lou Montuli teve a ideia de usar cookies mágicos em comunicações na web em 1994. Naquela época, ele trabalhava para a Netscape Communications, em um projeto de desenvolvimento de aplicativos de comércio eletrônico para a MCI. Os cookies têm sido utilizados como solução na construção de carrinhos de compras virtuais, ajudando os servidores da MCI a não terem que salvar o status das transações, mas sim armazená-los no computador do usuário.

Juntamente com John Giannandrea, Montuli escreveu a primeira especificação para cookies Netscape. A versão 0.0beta do Mosaic Netscape, lançada em 13 de outubro de 1994, suportava cookies. A primeira utilização de cookies (fora do laboratório) verificou se um cliente que visitava o site da Netscape já o havia visitado antes ou não. Montuli obteve uma patente de cookie em 1995. E a versão 2 do Internet Explorer (lançada em outubro de 1995) incorporou o uso de cookies.

A introdução de cookies não foi generalizada nesta época. Em particular, os cookies são aceites por defeito, os utilizadores não são notificados da sua presença. O público só tomou conhecimento da existência de cookies depois de um artigo sobre eles no Financial Times ter sido publicado em 12 de fevereiro de 1996. Desde então, os cookies têm recebido muita atenção, especialmente as informações privadas neles contidas. Os cookies foram discutidos em duas audiências da Comissão Federal de Comércio dos EUA em 1996 e 1997.

A primeira discussão sobre uma especificação formal de cookie começou em abril de 1995. Um grupo especial dentro da Internet Engineering Task Force (IETF) foi formado com o propósito de realizar este trabalho. Finalmente, a especificação foi publicada pelo grupo em fevereiro de 1997. A especificação definia cookies de terceiros como não aceitáveis ​​para todos ou, pelo menos, não habilitados por padrão.
Em abril de 2011, a especificação padrão para cookies em uso prático foi publicada no documento RFC 6265 .

2.2. Terminologia

Cookies de sessão

Os cookies de sessão, também chamados de cookies de memória ou cookies transitórios, só existem na memória temporária enquanto o utilizador navega no site. Se uma data de expiração ou intervalo de validade não for definido no momento da criação do cookie, um cookie de sessão será definido. Normalmente, os navegadores da web excluem automaticamente os cookies de sessão quando o usuário fecha o navegador.

Cookies persistentes

Os cookies persistentes prolongam a sessão do usuário. Se um cookie persistente for definido como Max-Age de 1 ano, durante esse período, o valor inicial definido no cookie será enviado ao servidor cada vez que o usuário visitar o site. Ele pode ser usado para registrar informações importantes, como a primeira vez que o usuário visitou o site. Por esta razão, os cookies persistentes também são chamados de cookies de rastreamento.

Cookies seguros

Cookie seguro é um atributo de segurança habilitado ao usar HTTPS, garantindo que o cookie seja sempre criptografado quando transferido do cliente para o servidor, evitando espionagem e revelação de informações. Além disso, todos os cookies devem cumprir a política de mesma origem do navegador.

Cookies somente HTTP

O atributo HttpOnly dos cookies é suportado pela maioria dos navegadores. Um cookie de sessão HttpOnly será usado apenas em uma solicitação HTTP (ou HTTPS), limitando assim o acesso por APIs não HTTP, como Javascript. Essa restrição atenua, mas não elimina o roubo de cookies por meio de vulnerabilidades de script entre sites (XSS).

Cookies de terceiros

Cookies primários são cookies pertencentes ao mesmo domínio (ou subdomínios dentro do mesmo domínio) exibidos na barra de endereço do navegador. Cookies de terceiros são cookies pertencentes a diferentes domínios exibidos na barra de endereços do navegador. Os sites podem ter conteúdo de domínios de terceiros (como banners), a partir dos quais o histórico de navegação dos usuários pode ser rastreado. As configurações de privacidade da maioria dos navegadores bloqueiam cookies de rastreamento de terceiros.

Por exemplo, suponha que um usuário visite o site example1.com . Este site contém um anúncio de ad.foxytracking.com. Quando carregado, os cookies de ad.foxytracking.com serão salvos. Ele então visita outro site (example2.com), que também contém um anúncio de ad.foxytracking.com, e também define um cookie pertencente a ad.foxytracking.com. Por fim, ambos os cookies serão enviados ao anunciante ao carregar anúncios ou acessar seu site. Os anunciantes podem usar esses cookies para criar o histórico de navegação do usuário em todos os sites que contêm seus anúncios.

Em 2014, havia alguns sites que definiam cookies que podiam ser lidos por mais de 100 domínios de terceiros. Em média, um site terá cerca de 10 cookies configurados, com um número máximo de cookies superior a 800.

Superbiscoito

Um supercookie é um cookie originado de um domínio de nível superior, como .com, ou de um sufixo público, como .co.uk. É importante que os supercookies sejam bloqueados pelos navegadores devido a alguns problemas de segurança. Se desbloqueado, um invasor que controla um site malicioso pode configurar um supercookie para personificar as solicitações do usuário, enviando solicitações para outros sites que compartilham o mesmo domínio de nível superior ou sufixo público. Por exemplo, um supercookie originário do domínio .com pode prejudicar as solicitações para exemplo.com, mesmo que o cookie não tenha origem em exemplo.com. Ele pode ser explorado para falsificar logins ou alterar informações do usuário.

Biscoitos zumbi

Cookies zumbis são cookies que são recriados automaticamente após o usuário excluí-los. Isso é feito por um script que armazena o conteúdo do cookie em outro local, como um armazenamento de conteúdo Flash, um armazenamento HTML5 ou algum outro mecanismo do lado do cliente.

2.3. Estrutura de cookies

Um cookie com tamanho de 4 KB inclui 7 componentes principais:

  1. Nome
  2. Valor
  3. Expira (data de validade)
  4. Caminho (caminho para onde o cookie é válido, “/” significa que o cookie é válido em qualquer caminho)
  5. Domínio
  6. Seguro
  7. Somente http

Os primeiros dois componentes (nome e valor) são obrigatórios.

2.4. Usar

Gerenciamento de sessão

Os cookies podem ser usados ​​para manter dados relacionados ao usuário em múltiplas visitas ao site. Os cookies são uma solução para a criação de um carrinho de compras, um carrinho de compras virtual que ajuda o utilizador a guardar os artigos que escolhe enquanto navega pelos produtos.

Os aplicativos atuais de carrinho de compras geralmente armazenam a lista de itens do carrinho no banco de dados do servidor, em vez de armazená-la em um cookie do lado do cliente. O servidor web normalmente enviará um cookie contendo o identificador da sessão - ID da sessão (que é único). O navegador retornará esse ID de sessão com a solicitação de compra de cada usuário.

Permitir que os usuários façam login em sites é outra aplicação dos cookies. Normalmente, durante o primeiro login, o servidor web enviará ao cliente um cookie contendo o ID da sessão. Os usuários enviarão suas informações e o aplicativo da web autenticará a sessão e permitirá que o usuário use seus serviços.

Os cookies fornecem um mecanismo de interação cliente/servidor rápido e conveniente. Uma das vantagens dos cookies é que armazenam informações do usuário em um arquivo localizado no computador do usuário. Isso reduz significativamente o espaço de armazenamento e o tempo de processamento do servidor.

Personalizado

Os cookies podem ser usados ​​para lembrar as informações pessoais de um usuário quando ele visita um site, para exibir conteúdo mais relevante para esse usuário cada vez que ele visita o site novamente.

Um exemplo proeminente é o recurso de recomendação de livros da amazon.com. Quando um usuário clica em um livro, a Amazon faz sugestões sobre os próximos livros que o usuário deve conferir. Essas sugestões baseiam-se nos livros que os usuários navegaram anteriormente e nos livros que escolheram comprar.

Outro exemplo é o recurso de sugestão de pesquisa da Pesquisa Google. Ao fazer login com sua conta pessoal e realizar uma pesquisa, o Google fornecerá sugestões “só para você”, e os resultados desejados sempre aparecerão no topo da lista.

Monitor

Os cookies de rastreamento podem ser usados ​​para rastrear o histórico de navegação de um usuário. Isso também pode ser feito usando o endereço IP do computador que envia a solicitação ao site ou contando com o campo Referrer do cabeçalho da solicitação HTTP, mas os cookies fornecem mais precisão. Isto se faz do seguinte modo:

  1. Se um usuário visitar um site, mas esta solicitação não contiver um cookie, o servidor assumirá que esta é a primeira vez que o usuário visita este site; O servidor irá gerar uma string aleatória e enviá-la como um cookie de volta ao navegador junto com a página da web solicitada.
  2. A partir deste ponto, o cookie será enviado automaticamente pelo navegador ao servidor sempre que for solicitada uma nova página web neste site, o servidor retornará a página solicitada normalmente, mas com o URL dessa página web e o tempo. O acesso será salvo em um arquivo de log. Ao analisar as informações salvas neste arquivo de log, o histórico de navegação da pessoa, os sites visitados com frequência e os hábitos de navegação serão revelados.

2.5. Implantação

Web11: Cookies HTTP e alguns problemas de segurança

Cookies são dados enviados do servidor para o navegador. O navegador irá então enviá-lo de volta ao servidor sem alterar o conteúdo interno, cada vez que o usuário enviar uma solicitação ao site. Os cookies também podem ser definidos por uma linguagem de script, como Javascript.

Cada navegador da web pode armazenar pelo menos 300 cookies em um arquivo de 4 KB e pelo menos 20 cookies por servidor ou domínio.

Configurar cookies

O servidor web e o navegador se comunicam via HTTP (HyperText Transfer Protocol). Por exemplo, para acessar a página http://www.example.org/index.html, o navegador se conecta ao servidor enviando uma solicitação HTTP como esta:

Web11: Cookies HTTP e alguns problemas de segurança

O servidor responderá enviando ao navegador um pacote de texto simples, denominado resposta HTTP. Este pacote pode conter uma linha contendo o conteúdo do cookie:

Web11: Cookies HTTP e alguns problemas de segurança

Set-Cookie é um campo que instrui o navegador a armazenar o cookie e enviá-lo ao servidor futuramente sempre que houver uma solicitação ao servidor (se o cookie ainda estiver expirado). Por exemplo, o navegador envia uma solicitação para http://www.example.org/spec.html enviando uma solicitação HTTP como esta:

Web11: Cookies HTTP e alguns problemas de segurança

Esta é uma solicitação para outra página pertencente ao mesmo servidor. Neste caso, o servidor entenderá que esta solicitação está relacionada à solicitação anterior e responderá enviando ao navegador a página solicitada, possivelmente adicionando outros valores de cookie.

O valor do cookie pode ser modificado pelo servidor enviando o campo Set-Cookie: name=value na resposta HTTP para o navegador. O navegador substituirá então o valor antigo do cookie por este novo valor.

O valor do cookie pode incluir qualquer caractere ASCII imprimível, exceto “,”, “;” e espaço em branco. Os nomes dos cookies também não podem conter o caractere '=', pois é o caractere que separa o nome e o valor.
O termo cookie fragmento às vezes é usado para se referir ao par nome-valor de um cookie.

Os cookies também podem ser definidos por Javascript ou uma linguagem de script semelhante. Em Javascript, o objeto document.cookie é usado para definir cookies. O atributo HttpOnly é responsável por impedir que scripts ruins leiam o conteúdo do cookie.

Propriedades dos cookies

Além do par nome-valor, o servidor também pode definir uma série de outras propriedades do cookie: Domínio, Caminho, Expiridade, Idade Máxima, Seguro e HttpOnly. O navegador não enviará esses atributos ao servidor, apenas enviará o par nome-valor. Esses atributos são usados ​​pelo navegador para determinar quando excluir cookies, bloquear cookies ou enviar cookies ao servidor.

Domínio e caminho

Domínio e caminho determinam o escopo do cookie. Eles permitem que o navegador determine quando enviar cookies ao servidor. Se não forem especificados, eles assumem como padrão o domínio e o caminho do objeto solicitado. No entanto, há uma diferença entre um cookie definido para foo.com sem o atributo de domínio e um conjunto de cookies com o atributo de domínio foo.com. No primeiro caso, o cookie só será enviado quando houver uma solicitação ao foo.com. Neste último caso, o cookie será enviado para todos os subdomínios de foo.com. A seguir está um exemplo de uma diretiva Set-Cookie de um site após o login do usuário, a partir de uma solicitação para docs.foo.com:

Web11: Cookies HTTP e alguns problemas de segurança

O primeiro cookie LSID não possui um atributo de domínio e possui o caminho /accounts. O navegador só enviará cookies quando a página solicitada estiver contida em docs.foo.com/accounts. Os dois cookies restantes, HSID e SSID, são enviados de volta ao servidor se houver uma solicitação para qualquer subdomínio de foo.com.
Os cookies também podem ser definidos apenas para o domínio principal e seus subdomínios. A configuração de cookies em www.foo.com a partir de www.bar.com não será permitida por razões de segurança.

Expira e Idade Máxima

O atributo Expires informa ao navegador quando excluir o cookie. A data em Expira é assim: “Wdy, DD Mon YYYY HH:MM:SS GMT”. Max-Age também é usado para indicar a data de expiração de um cookie. Vamos considerar o seguinte exemplo:

Web11: Cookies HTTP e alguns problemas de segurança

O primeiro cookie está definido para expirar em 15 de janeiro de 2013 e será usado pelo navegador quando expirar. O segundo cookie made_write_conn não expira e é usado como cookie de sessão, será excluído quando o navegador for desligado. O terceiro cookie reg_fb_gate, tem uma data de expiração no passado, será excluído imediatamente.

Seguro e somente HTTP

As propriedades Secure e HttpOnly são nulas; em vez disso, sua presença indica que as bases Secure e HttpOnly estão aplicadas.

O atributo Secure mantém a transmissão de cookies dentro de uma conexão criptografada. Se o servidor web definir um cookie com o atributo seguro a partir de uma conexão não segura, o cookie ainda poderá ser interceptado por um ataque man-in-the-middle.

O atributo HttpOnly instrui o navegador a não expor cookies através de uma conexão diferente de HTTP (ou HTTPS), como Javascript, e portanto dificulta a obtenção de cookies ao explorar vulnerabilidades de Cross-Site Scripting (XSS).

3. Alguns problemas de segurança ao usar cookies

Se um site usar o ID de sessão para identificar a sessão de um usuário, um invasor poderá roubar o cookie para se passar pelo usuário. Aqui estão alguns cenários comuns de roubo de cookies:

Escuta

Web11: Cookies HTTP e alguns problemas de segurança

O tráfego em uma rede pode ser interceptado e lido por terceiros (além do destinatário e do remetente). Este tráfego inclui cookies. Se a transmissão não for criptografada, um invasor poderá ler as informações confidenciais contidas no cookie. E aproveitando essas informações, os invasores irão se passar por usuários para realizar ações perigosas, como transações bancárias.

Este problema pode ser resolvido usando um protocolo seguro entre o computador do usuário e o servidor - o protocolo HTTPS. O servidor pode usar o sinalizador Seguro ao definir cookies. O cookie só será enviado através de um canal criptografado, como uma conexão SSL.

Scripting entre sites

Web11: Cookies HTTP e alguns problemas de segurança

Linguagens de script, como Javascript, podem ler valores de cookies e enviá-los para servidores arbitrários.

Suponha que um site tenha um erro de script entre sites, os hackers podem inserir códigos maliciosos, como o seguinte:

Web11: Cookies HTTP e alguns problemas de segurança

Quando a vítima clicar no link acima, o navegador executará o script no atributo onclick: enviando o cookie da vítima para o servidor attacker.com.

O cross-site scripting é uma das vulnerabilidades comuns dos sites (classificado em terceiro lugar entre as 10 vulnerabilidades mais comuns em 2013 - de acordo com o OWASP).

O risco desta vulnerabilidade pode ser limitado definindo o sinalizador HttpOnly para cookies. Nesse momento, os cookies não serão acessados ​​por linguagens de script.

Falsificação de solicitação entre sites

CSRF (Cross-site request forgery) ou ataque de um clique, é um método de explorar vulnerabilidades de sites por meio do qual comandos não autorizados são executados pelas vítimas – usuários autorizados pelo site sem o seu conhecimento.

O CSRF enganará o navegador da vítima para que envie solicitações http para aplicativos da web. Caso a sessão da vítima não tenha expirado, as solicitações acima serão feitas com os direitos de autenticação da vítima.

Por exemplo, a vítima Bob está realizando transações no site de um determinado banco X. Fred é o atacante, esse cara sabe como funciona o site do banco X quando quer transferir dinheiro da conta A para a conta B da seguinte forma:

http://bank.example.com/withdraw?account=accountA&amount=100&for=accountB

Ele enviará a Bob uma mensagem maliciosa.

Se o banco X armazenar informações de autenticação do usuário em um cookie e Bob clicar no link acima, o dinheiro de Bob será transferido para Fred.

Para limitar esse risco, os parâmetros Expires podem ser definidos para cookies.

4. Conclusão

Os cookies são usados ​​na maioria das aplicações web atualmente. Também contém riscos potenciais que afetam significativamente os utilizadores. Portanto, do lado do desenvolvedor, precisamos entender claramente os cookies e saber definir os parâmetros necessários para que a aplicação fique mais segura contra ataques de hackers.

Deixar um comentário

Como remover o aviso de solicitação de direitos autorais no canto direito da tela do Windows 10

Como remover o aviso de solicitação de direitos autorais no canto direito da tela do Windows 10

Você vê uma notificação de ativação do Windows 10 no canto direito da tela? Este artigo irá orientá-lo sobre como excluir o aviso de solicitação de direitos autorais no Windows 10.

Instruções do AZ sobre como instalar o Windows 10 build 14393.222

Instruções do AZ sobre como instalar o Windows 10 build 14393.222

Recentemente, a Microsoft lançou a atualização cumulativa mais recente para usuários de PC com Windows 10, chamada Build 14393.222. Esta atualização lançada para o Windows 10 corrige principalmente bugs com base no feedback do usuário e melhora a experiência de desempenho do sistema operacional.

Proteja sua rede de computadores com host Bastion em apenas 3 etapas

Proteja sua rede de computadores com host Bastion em apenas 3 etapas

Você tem computadores em sua rede local que precisam de acesso externo? Usar um host bastião como gatekeeper para sua rede pode ser uma boa solução.

3 maneiras de limpar rapidamente todos os logs de eventos no Windows 10

3 maneiras de limpar rapidamente todos os logs de eventos no Windows 10

Às vezes, pode ser necessário excluir logs de eventos antigos de uma só vez. Neste guia, Quantrimang.com mostrará três maneiras de excluir rapidamente todos os logs de eventos no Visualizador de Eventos do Windows 10.

Como criar uma tecla do Windows se o seu teclado não estiver disponível

Como criar uma tecla do Windows se o seu teclado não estiver disponível

Se você preferir usar um teclado clássico antigo, como o IBM Modelo M, que não inclui uma tecla física do Windows, existe um método fácil de adicionar mais, pegando emprestada uma tecla que você não usa com frequência.

Como criar modo de fundo transparente no Windows 10

Como criar modo de fundo transparente no Windows 10

WindowTop é uma ferramenta que tem a capacidade de escurecer todas as janelas de aplicativos e programas em execução em computadores com Windows 10. Ou você pode usar uma interface de fundo escuro no Windows.

Métodos de IP falso ajudam você a acessar anonimamente

Métodos de IP falso ajudam você a acessar anonimamente

Em muitos artigos anteriores, mencionamos que permanecer anônimo online é extremamente importante. Informações privadas vazam todos os anos, tornando a segurança online cada vez mais necessária. Essa também é a razão pela qual devemos usar endereços IP virtuais. Abaixo, aprenderemos sobre métodos para criar IPs falsos!

Como desativar a barra de idiomas na barra de tarefas do Windows 8

Como desativar a barra de idiomas na barra de tarefas do Windows 8

A barra de idiomas do Windows 8 é uma barra de ferramentas de idiomas em miniatura projetada para ser exibida automaticamente na tela da área de trabalho. No entanto, muitas pessoas desejam ocultar esta barra de idiomas na barra de tarefas.

Dicas para otimizar a velocidade da conexão com a Internet da Linksys

Dicas para otimizar a velocidade da conexão com a Internet da Linksys

Maximizar a velocidade da Internet é essencial para otimizar sua conexão de rede. Você pode ter uma ótima experiência de entretenimento e trabalho usando computadores, TVs com Internet, consoles de jogos, etc.

Como configurar WEP, WPA, WPA2 para roteador Linksys

Como configurar WEP, WPA, WPA2 para roteador Linksys

A conectividade sem fio é uma necessidade hoje e por isso a segurança sem fio é essencial para garantir a segurança da sua rede interna.