Tecnologia para Web
Cookies
Enrique Pimentel Leite de Oliveira
[email protected]
Visão Geral
• “Cookies fornecem um meio de aplicativos
da Web para armazenar informações
específicas de usuário”
• Por exemplo, armazenar as preferências do
usuário de uma site para que, ao retornar ao
site, a aplicação possa recuperar as
informações armazenadas anteriormente.
O que são cookies?
• Um cookie é um pequeno arquivo de texto
(normalmente 4096 bytes) que acompanha
solicitações e páginas à medida que eles vão
entre o servidor Web e navegador do cliente.
• O cookie contém informações que o
aplicativo Web poderá ler sempre que o
usuário visitar o site.
Limitações do Cookie
• A maioria dos navegadores dão suporte para cookies de até
4096 bytes
– Devido a esse limite, normalmente são armazenados apenas
um identificador, como por exemplo nome de usuário
• A maioria dos navegadores permite apenas 20 cookies por site
– Se tentar armazenar mais, os cookies mais antigos serão
descartados
• Alguns navegadores também colocam um limite absoluto,
geralmente 300 cookies para todos os sites visitados
Mitos sobre cookies
•
•
•
Um cookie pode descobrir email ou informações pessoais.
– Falso. Um cookie só tem informações que já foram fornecidas ou
podem ser obtidas facilmente pelos sites.
Cookies podem transmitir vírus ou spyware.
– Falso. Um cookie não contém código, é apenas um pequeno texto.
Os cookies podem rastrear os sites que visito.
– Em termos. O valor de um cookie é acessível apenas ao site ao
qual pertence. Mas se o site X usa uma imagem (ou outro recurso
qualquer) de um site Y, o site Y poderá saber se você já o visitou
antes no instante em que você visita o site X.
Gravando cookies
• O navegador é responsável por gerenciar cookies em
um sistema de usuário
• Cookies são enviados para o navegador através do
objeto HttpResponse que expõe uma coleção
chamada Cookies
• Ao criar um cookie, deve-se especificar um Name e
um Value
• Cada cookie deve ter um nome exclusivo para que ele
possa ser identificado posteriormente quando lido a
partir do navegador
Gravando cookies
• Pode-se também definir uma data de expiração
– Cookies expirados são excluídos pelo navegado
– É possível definir a data de validade de um cookie para
ser de 50 anos a partir de sua criação
• Se a expiração de do cookie não for definida, ele será
criado mas não será armazenado no disco rígido do
usuário
• Em vez disso, o cookie será mantido como parte das
informações de sessão do usuário, assim que o
usuário fechar o navegador, o cookie será descartado
Gravando cookies
• Duas forma para armazenar cookies:
Response.Cookies["userName"].Value = “jonas";
Response.Cookies["userName"].Expires =
DateTime.Now.AddDays(1);
HttpCookie aCookie = new HttpCookie("lastVisit");
aCookie.Value = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);
Gravando cookies
• Cookies com mais de um valor
Response.Cookies["userInfo"]["userName"] = “jonas";
Response.Cookies["userInfo"]["lastVisit"] =
DateTime.Now.ToString();
Response.Cookies["userInfo"].Expires =
DateTime.Now.AddDays(1);
HttpCookie aCookie = new HttpCookie("userInfo");
aCookie.Values["userName"] = “jonas";
aCookie.Values["lastVisit"] = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);
Lendo cookies
•
•
Quando um navegador faz uma solicitação para o servidor, ele envia os
cookies para esse servidor junto com a solicitação
Em aplicativos ASP.NET, pode-se ler os cookies usando o objeto
HttpResquest, que está disponível como a propriedade Request de sua
classe Page
if(Request.Cookies["userName"] != null)
Label1.Text=Server.HtmlEncode(Request.Cookies["userName"].Value);
if(Request.Cookies["userName"] != null) {
HttpCookie aCookie = Request.Cookies["userName"];
Label1.Text = Server.HtmlEncode(aCookie.Value);
}
Lendo cookies
• Observe também que o método
HtmlEncode foi chamado para codificar o
conteúdo de um cookie antes de exibi-lo
na página
• Isso garante que um usuário malintencionado não adicionou script
executável no cookie
Lendo Cookies
• Leitura de subchaves
if(Request.Cookies["userInfo"] != null) {
Label1.Text=Server.HtmlEncode(Request.Cookies["use
rInfo"]["userName"]);
Label2.Text=Server.HtmlEncode(Request.Cookies["use
rInfo"]["lastVisit"]);
}
Lendo coleções de cookies
System.Text.StringBuilder output = new
System.Text.StringBuilder();
HttpCookie aCookie;
for(int i=0; i<Request.Cookies.Count; i++) {
aCookie = Request.Cookies[i];
output.Append("Cookie name = " +
Server.HtmlEncode(aCookie.Name) + "<br />");
output.Append("Cookie value = " +
Server.HtmlEncode(aCookie.Value) + "<br /><br />");
}
Label1.Text = output.ToString();
Lendo coleções com subchaves
for(int i=0; i<Request.Cookies.Count; i++) {
aCookie = Request.Cookies[i]; output.Append("Name = " +
aCookie.Name + "<br />");
if(aCookie.HasKeys) {
for(int j=0; j<aCookie.Values.Count; j++) {
subkeyName=Server.HtmlEncode(
aCookie.Values.AllKeys[j]);
subkeyValue=Server.HtmlEncode(aCookie.Values[j]);
output.Append("Subkey name = " + subkeyName + "<br />");
output.Append("Subkey value = " + subkeyValue + "<br
/><br />");
}
}
else {
output.Append("Value="+Server.HtmlEncode(aCookie.Value) +
"<br /><br />");
}
}
Label1.Text = output.ToString();
Exercício
• Criar um programa que salve em um cookie as opções
selecionadas por um usuário na página e depois carregue as
opções selecionadas em um listbox, conforme exemplo:
Bibliografia
•
•
Ler artigo:
http://msdn2.microsoft.com/ptbr/library/ms178194(VS.80).aspx
http://br.mozdev.org/firefox/cookies
Download

Cookies - Objetivo Sorocaba