Cookies - Como funciona?

Iniciado por DarkGenesis, 05 de Março , 2009, 09:18:58 PM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

DarkGenesis

Cookies - Como funciona?

Introdução

Os cookies da Internet começaram a receber atenção da mídia por volta do ano 2000, devido às preocupações com a privacidade na Internet.

Os cookies são informações guardadas no computador no momento em que o usuário se autentica. Eles garantem a segurança do usuário e a segurança do sistema. Nesse artigo, examinaremos a tecnologia básica por trás dos cookies e também vamos saber o que eles possibilitam.

Os fundamentos do cookie
Há algum tempo, li uma matéria detalhada sobre privacidade na Internet em um grande e respeitado jornal, e a matéria continha uma definição de cookies. Parafraseando-a, a definição era a seguinte:

Citaros cookies são programas que os sites colocam no seu disco rígido. Eles ficam no seu computador juntando informações sobre você e tudo o que você faz na internet e, cada vez que o site quiser, pode descarregar toda a informação que o cookie coletou". [errado]

Definições como essa são comuns na mídia. O problema é que não está correta. Os cookies não são programas e não podem rodar como programas. Portanto, não podem juntar informações, nem podem coletar qualquer informação pessoal sobre você a partir de sua máquina.

Aqui está uma definição válida de um cookie: um cookie é uma parte de um texto que um servidor da web armazena no disco rígido do usuário. Os cookies permitem que um site armazene informações no computador do usuário e depois as recupere. As informações são armazenadas como pares de nome-valor.

Um site pode gerar um número de ID exclusivo para cada visitante e armazenar esse número em cada máquina de usuário por meio de um arquivo de cookie.

Se você usa o Microsoft Internet Explorer para navegar na web, pode ver todos os cookies armazenados na sua máquina. O lugar mais comum onde ficam armazenados é um diretório chamado c:windowscookies. Quando eu examino esse diretório no meu computador, encontro 165 arquivos. Cada arquivo é um arquivo de texto que contém pares de nome-valor, e existe um arquivo para cada site que deixou cookies na minha máquina.

Você pode ver no diretório que cada um destes arquivos é um arquivo de texto simples e normal. Quando você olha o nome de um deles, observa que cada site deixou um arquivo na máquina (a informação também está armazenada dentro dele). É possível abri-lo com um clique.

Eu visitei, por exemplo, o goto.com, e o site colocou um cookie na minha máquina. O arquivo de cookie para goto.com contém a seguinte informação:

        UserID A9A3BECE0563982D www.goto.com/ 

O goto.com armazenou na minha máquina um par único de nome-valor. O nome do par é UserID e o valor é A9A3BECE0563982D. A primeira vez que eu visitei o goto.com, o site me designou um valor exclusivo de ID e o armazenou na minha máquina.

Observe que, provavelmente, existem vários outros valores armazenados no arquivo depois dos três mostrados acima. Isto são informações que o navegador usa para se organizar.

A amazon.com armazena um número um pouco maior de informações na minha máquina. Quando examino o arquivo de cookie que ela criou, ele contém o seguinte:

   session-id-time 954242000
   amazon.com/
     session-id 002-4135256-7625846
   A Amazon.com/
     x-main eKQIfwnxuF7qtmX52x6VWAXh@Ih6Uo5H
   A Amazon.com/
     ubid-main 077-9263437-9645324
   A Amazon.com/
 

Parece que a amazon armazena uma ID de usuário principal, uma ID para cada sessão e a hora em que a sessão começou em minha máquina.

A grande maioria dos sites armazena apenas uma informação, uma ID de usuário. Mas o site pode armazenar muitos pares de nome-valor, se quiser.

Um par de nome-valor é simplesmente parte de um dado nomeado. Não é um programa e ele não pode "fazer" nada. Um site pode recuperar apenas a informação que ele colocou na sua máquina. Ele não pode recuperar informação de outros arquivos de cookie, nem qualquer outra informação.

Como os dados de cookie se movimentam?
Como você viu na seção anterior, os dados de cookie são pares de nome-valor armazenados por um site no disco rígido de seu computador. O site armazena dados e mais tarde, os recebe de volta e pode apenas receber dados que armazenou em sua máquina, sem a possibilidade de ler outro cookie ou qualquer outro dado.

Os dados se movimentam da seguinte maneira:

    * Se você digita a URL de um site no seu navegador, é mandado um pedido para a página. Se você digitar, por exemplo, a URL http://www.amazon.com, o seu navegador entrará em contato com o provedor da Amazon e solicitará esta página.

    * Quando o navegador faz isto, ele procura um arquivo de cookie que a amazon instalou no seu computador. Ao encontrá-lo, mandará todos os pares de nome-valor no arquivo para o provedor da amazon junto com a URL. Se não encontrar nenhum arquivo de cookie, não enviará nenhuma informação.

    * O provedor da Amazon recebe o dado de cookie e o pedido para a página. Se os pares de nome-valor forem recebidos, a Amazon pode usá-los.

    * Se não forem recebidos pares de nome-valor, a Amazon sabe que você não a visitou antes. O provedor cria uma nova ID para você na base de dados do site da loja e envia os pares de nome-valor para o cabeçalho da página da web. A sua máquina armazena os pares de nome-valor no disco rígido.

    * O provedor da web pode mudar os pares de nome-valor ou acrescentar pares novos toda vez que você visitar o site e requisitar uma página.

Existem outras informações que o provedor pode enviar com o par de nome-valor. Uma delas é uma data de validade. Outra é um caminho, para que o site possa associar valores diferentes de cookies com as diferentes partes do site.

Você tem controle sobre este processo. É possível selecionar uma opção no seu navegador para que ele o informe toda vez que um site envia pares de nome-valor. Você pode aceitar ou negar os valores.

Como os sites usam cookies?
No sentido mais amplo, um cookie permite que uma determinada informação seja armazenada no seu computador. Esta informação permite que um site se lembre qual a situação do seu navegador. Uma ID é apenas uma parte da informação. Se existe uma ID na sua máquina, o site sabe que você já o visitou antes e a ID é obtida a partir desta visita. A informação é "o site já foi visitado pelo seu navegador pelo menos uma vez".

Os sites da web usam os cookies de muitas maneiras diferentes. Veja abaixo, alguns dos exemplos mais comuns.

    * Os sites podem determinar precisamente quantas pessoas os visitam. Acontece que, devido aos servidores proxy, armazenamento em cache, concentradores e outros recursos, a única forma de um site contar com precisão os visitantes é colocar um cookie com uma ID única para cada visitante. Ao usar cookies, os sites podem determinar:
          o quantos visitantes chegam
          o quantos são novos visitantes novos e quantos já acessaram o site
          o a freqüência das visitas

      Isto é feito utilizando uma base de dados. A primeira vez que o visitante chega, o site cria uma ID na base de dados e a envia na forma de um cookie. Cada vez que o usuário voltar, um contador associado a esta ID é acionado.

       
    * Os sites podem armazenar as preferências do usuário para que ele pareça diferente para cada visitante (conhecido freqüentemente como customização). Se, por exemplo, você visita o msn.com ele oferece a capacidade de "mudar o conteúdo/layout/cor." Ele permite também que você coloque o seu CEP e receba uma informação personalizada. Ao colocar o seu CEP, o seguinte par de nome-valor é acrescentado ao seu arquivo de cookie:
       
           WEAT CC=NC%5FRaleigh%2DDurhamandREGION= www.msn.com/ 

      Parece que a maioria dos sites armazenam as preferências dos usuários em sua base de dados e somente uma ID como um cookie, porém, guardá-los na forma de pares nome-valor é outra maneira de fazê-lo (examinaremos, mais adiante, porque este método tem perdido credibilidade).

       
    * Sites de E-comerce podem implantar coisas como carrinhos de compras e opções de "pagamento rápido". O cookie contém uma ID e permite ao site rastrear você à medida que acrescenta coisas diferentes ao seu carrinho. Cada item acrescentado é armazenado na base de dados juntamente com o seu valor de ID. Quando você paga, o site recupera todos os dados armazenados. Seria impossível implantar um mecanismo de compra conveniente sem os cookies ou mecanismo semelhante.

Em todos estes exemplos, a base de dados de um site é capaz de armazenar as páginas que visitadas, formulários preenchidos, etc. Na maioria dos casos, só o que fica armazenado no seu computador é um cookie contendo a sua ID exclusiva.


Problemas com os cookies
Veja abaixo alguns dos problemas com os cookies.

    * Os computadores são freqüentemente compartilhados pelas pessoas - qualquer computador que seja usado em um ambiente público em escritórios ou em casa são compartilhados por várias pessoas. Digamos que você use uma máquina comunitária (em uma biblioteca, por exemplo) para fazer uma compra virtual. Os arquivos cookies são gerados automaticamente dentro da máquina, deixando informações sobre você e alguém pode, mais tarde, tentar usar suas informações para tentar comprar algo usando a sua conta. É por isso que as lojas fazem uma ampla divulgação sobre este problema. Mesmo assim, falhas podem ocorrer. Uma vez, usei o computador de minha esposa para fazer uma compra na Amazon.com. Quando ela acessou o mesmo site, clicou sem querer no botão "basta um clique" e, ao fazer isso, acabou comprando um livro.

      Este problema não acontece se o sistema operacional instalado no computador for como o Windows NT ou UNIX, que usam as contas adequadamente. As contas diferenciam todos os cookies dos usuários. O problema é que, em outros sistemas operacionais, as contas são mais facilmente desbloqueadas.

       
    * Os cookies são apagados - se você tiver um problema com o seu navegador e chamar o suporte técnico, todos os arquivos da pasta "temporary internet files" da sua máquina serão apagados. Feito isto, todos os seus arquivos de cookies serão perdidos. Quando você visitar um site novamente, será visto como um novo usuário e um novo cookie será gerado. Isto pode causar confusão entre o registro novo e o antigo e também pode dificultar a recuperação de suas preferências que haviam sido guardadas. É por isto que os sites, em alguns casos, pedem que você faça o seu registro, utilizando uma senha e nome de usuário, porque mesmo que o arquivo que tem o cookie seja perdido, ao fazer o login, suas preferências serão restauradas. Se as opções de preferência forem guardadas diretamente na máquina (como no sistema de registro do MSN), então a recuperação é impossível. É por isto que muitos sites guardam todas as informações do usuário em uma base de dados central e armazenam apenas o valor de ID (identificação) no computador do usuário. 

       
    * Máquinas múltiplas - algumas pessoas usam mais de um computador em um dia. Por exemplo, eu tenho um computador no escritório, um em casa e um laptop para usar em trânsito. A não ser que um site seja projetado especificamente para solucionar o problema, eu terei três arquivos de cookies únicos nas três máquinas. Qualquer site que eu visite de cada uma das três máquinas, vai me rastrear como três usuários diferentes. Pode ser uma chateação ter que determinar as suas preferências três vezes. Um site que permite o registro e armazena as preferências de forma central, pode facilitar que eu tenha a mesma conta nas três máquinas, mas as pessoas que desenvolvem os sites precisam planejar isto quando projetam o site.

      Se você visitar o histórico de URL de uma máquina e depois tentar novamente a partir de outra, você vai descobrir que as listas de histórico são diferentes. Isto porque o servidor cria duas identidades para você, uma em cada máquina.

É provável que as soluções para estes problemas não sejam fáceis, exceto pedindo aos usuários que registrem-se e armazenem tudo em uma base de dados central.

Por que a confusão em torno dos cookies?
Se você leu o artigo até este ponto, pode estar pensando por que razão a mídia questiona o uso dos cookies e por que se discute a respeito da privacidade na Internet. Você viu aqui que os cookies são bons arquivos e que eles disponibilizam muitos serviços úteis na Internet.

Dois fatores causaram uma reação forte em torno deles.

    * O primeiro fator vem afetando muitos consumidores há algum tempo. Digamos que você compre algo em uma loja tradicional que efetua vendas por catálogo. A partir do seu pedido, a empresa tem o seu nome, endereço e telefone, e sabe quais itens foram comprados. Eles podem vender as suas informações para outras empresas que queiram vender produtos similares para você. É isto que torna o telemarketing e o junk mail (spams) possíveis.

      Através de um site é possível rastrear não só as suas compras, mas também as páginas que você leu, os anúncios nos quais clicou, etc. Ao comprar um produto, você fornece o seu nome e endereço e o site acaba sabendo muito mais sobre você do que uma empresa de vendas tradicionais por catálogo. Isto torna o direcionamento muito mais preciso e faz com que muitas pessoas se sintam desconfortáveis.

      Sites diferentes têm políticas diferentes. O HowStuffWorks tem uma política de privacidade rigorosa e não vende ou compartilha qualquer informação pessoal sobre nossos leitores com terceiros, exceto nos casos em que tenha sua autorização pessoal para fazê-lo (quando opta, por exemplo, por receber um e-mail sobre um determinado assunto).

    * O segundo fator é exclusivo da Internet. Existem certos provedores de infra-estrutura que podem criar cookies visíveis em vários sites. A DoubleClick (em inglês) é o exemplo mais famoso. Muitas empresas utilizam a DoubleClick em banners de anúncios em seus sites. A DoubleClick pode colocar pequenos arquivos GIF (1x1 pixel) no site e esses arquivos permitem que os cookies sejam carregados na sua máquina. Ela pode rastrear os seus movimentos através de vários sites, sendo capaz de pesquisar o que você digita nas ferramentas de busca - mais devido a forma como os sistemas de busca são implementados do que com alguma intenção obscura. A DoubleClick pode juntar informações a seu respeito vindas de vários sites e é capaz de formar um valioso número de perfis. Eles são todos anônimos, mas muito valiosos.

      Então, a DoubleClick foi além. Ao adquirir uma empresa, ameaçou associar estes ricos perfis anônimos a informações de nome e endereço, personalizá-los e vender os dados. Este fato se parecia muito com espionagem e, por isso, causou uma enorme polêmica.

      A DoubleClick e outras empresas similares estão em uma posição ímpar para fazer isso, pois servem anúncios em vários sites. A troca de perfis entre sites não é uma capacidade disponível aos sites individualmente, porque os cookies são específicos para cada site.

Creditos: http://informatica.hsw.uol.com.br/cookies-da-internet6.htm

Triplo X

É isso ae!

Exemplos:

Trabalhando com cookies em javascript:

<html>
<head>
<title></title>
<script>
function getCookie (name){
var dcookie = document.cookie;
var cname = name + "=";
var clen = dcookie.length;
var cbegin = 0;
while (cbegin < clen){
var vbegin = cbegin + cname.length;
if (dcookie.substring(cbegin, vbegin) == cname){
var vend = dcookie.indexOf (";", vbegin);
if (vend == -1) vend = clen;
return unescape(dcookie.substring(vbegin, vend));
}
cbegin = dcookie.indexOf(" ", cbegin) + 1;
if (cbegin == 0) break;
}

return null;
}

function setCookie (name, value, expires)
{
if (!expires) expires = new Date();
document.cookie = name + "=" + escape (value) + "; expires=" +expires.toGMTString() + "; path=/";
}

function gravaCookie()
{
var dataexp = new Date ();
dataexp.setTime (dataexp.getTime() + (24 * 60 * 60 * 1000 * 5));
setCookie ("acesso", "1", dataexp);
}
</script>
<script>
var cookie = getCookie("acesso");
if(cookie) {
document.write ("cookie já gravado");
}
else {
gravaCookie();
document.write("Novo cookie foi gravado")
}
</script>
</head>
<body>


</body>
</html>


Mais exemplos em:

http://ecarrara.com/javascript/javascript-manipulando-cookies/

http://www.codigofonte.com.br/codigo/js-dhtml/diversos/trabalhando-com-cookies

Ler cookie gerado por javascript usando php - iMasters Fóruns

Como Criar Cookie Permanente Em Javascript

Checando se o browser suporta cookies (recomendável ler)


Criando cookie em JSP:

<%
String username=request.getParameter("name");
if(username==null) username="";

Date now = new Date();
String timestamp = now.toString();
Cookie cookie = new Cookie ("name",username);
cookie.setMaxAge(365 * 24 * 60 * 60);
response.addCookie(cookie);

%><script>alert('Cookie criado!');</script>


Visualizando cookie em JSP:

<%@ page language="java"  %>
<%
String cookieName = "name";
Cookie cookies [] = request.getCookies ();
Cookie myCookie = null;
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
if (cookies [i].getName().equals (cookieName)) {
myCookie = cookies[i];
break;
}
}
}
%>
<html>
<head>
<title>Show Saved Cookie</title>
</head>
<body>


<%
if (myCookie == null) {
%>
No Cookie found with the name <%=cookieName%>
<%
} else {
%>
<p>Welcome: <%=myCookie.getValue()%>.
<%
}
%>
</body>



Matando cookie:

<% String cookieName = "name";
Cookie cookie = new Cookie ("name",cookieName);
Cookie[] cookies = request.getCookies();
     if (cookie.getValue() != null ) {
       cookie.setMaxAge(0);
       cookie = null;
       response.addCookie(cookie);
%><script>alert('cookie deletado!');</script><% } %>



Até a próxima...
Não me venha dizer que é melhor que alguém que eu te espanco!
Todos não passamos de ratinhos que morrerão um dia como todos os outros...

Lanus

cookie: negocinho do demonio uhahuahuahuahu, interessante, nao sabia que pudea ser feito tudo isso com cookie, achei que fosse só para indentificação pro site mesmo.
vlw pelo post
FF Criações - Web Designer - www.ffcriacoes.com.br

Stradivous

Ótimo Post DG.
Valeu pelas Informações.