16
Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira Enrique Pimentel Leite de Oliveira [email protected] [email protected]

Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira [email protected]

Embed Size (px)

Citation preview

Page 1: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Tecnologia para WebCookiesTecnologia para WebCookies

Enrique Pimentel Leite de OliveiraEnrique Pimentel Leite de [email protected]@aes.edu.br

Page 2: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Visão GeralVisão Geral

““Cookies fornecem um meio de Cookies fornecem um meio de aplicativos da Web para armazenar aplicativos da Web para armazenar informações específicas de usuário”informações específicas de usuário”

Por exemplo, armazenar as Por exemplo, armazenar as preferências do usuário de uma site preferências do usuário de uma site para que, ao retornar ao site, a para que, ao retornar ao site, a aplicação possa recuperar as aplicação possa recuperar as informações armazenadas informações armazenadas anteriormente.anteriormente.

Page 3: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

O que são cookies?O que são cookies?

Um cookie é um pequeno arquivo de texto Um cookie é um pequeno arquivo de texto (normalmente 4096 bytes) que (normalmente 4096 bytes) que acompanha solicitações e páginas à acompanha solicitações e páginas à medida que eles vão entre o servidor Web medida que eles vão entre o servidor Web e navegador do cliente.e navegador do cliente.

O cookie contém informações que o O cookie contém informações que o aplicativo Web poderá ler sempre que o aplicativo Web poderá ler sempre que o usuário visitar o site.usuário visitar o site.

Page 4: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Limitações do CookieLimitações do Cookie

A maioria dos navegadores dão suporte A maioria dos navegadores dão suporte para cookies de até 4096 bytespara cookies de até 4096 bytes

Devido a esse limite, normalmente são Devido a esse limite, normalmente são armazenados apenas um identificador, como armazenados apenas um identificador, como por exemplo nome de usuáriopor exemplo nome de usuário

A maioria dos navegadores permite A maioria dos navegadores permite apenas 20 cookies por site apenas 20 cookies por site

Se tentar armazenar mais, os cookies mais Se tentar armazenar mais, os cookies mais antigos serão descartados antigos serão descartados

Alguns navegadores também colocam um Alguns navegadores também colocam um limite absoluto, geralmente 300 cookies limite absoluto, geralmente 300 cookies para todos os sites visitadospara todos os sites visitados

Page 5: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Mitos sobre cookiesMitos sobre cookies

Um cookie pode descobrir email ou Um cookie pode descobrir email ou informações pessoais.informações pessoais.

Falso.Falso. Um cookie só tem informações que já Um cookie só tem informações que já foram fornecidas ou podem ser obtidas foram fornecidas ou podem ser obtidas facilmente pelos sites.facilmente pelos sites.

Cookies podem transmitir vírus ou Cookies podem transmitir vírus ou spyware.spyware.

Falso.Falso. Um cookie não contém código, é apenas Um cookie não contém código, é apenas um pequeno texto. um pequeno texto.

Os cookies podem rastrear os sites que Os cookies podem rastrear os sites que visito.visito.

Em termos.Em termos. O valor de um cookie é acessível O valor de um cookie é acessível apenas ao site ao qual pertence. Mas se o site apenas ao site ao qual pertence. Mas se o site X usa uma imagem (ou outro recurso qualquer) X usa uma imagem (ou outro recurso qualquer) de um site Y, o site Y poderá saber se você já o de um site Y, o site Y poderá saber se você já o visitou antes no instante em que você visita o visitou antes no instante em que você visita o site X.site X.

Page 6: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Gravando cookiesGravando cookies

O navegador é responsável por gerenciar O navegador é responsável por gerenciar cookies em um sistema de usuáriocookies em um sistema de usuário

Cookies são enviados para o navegador Cookies são enviados para o navegador através do objeto através do objeto HttpResponseHttpResponse que que expõe uma coleção chamada expõe uma coleção chamada CookiesCookies

Ao criar um cookie, deve-se especificar um Ao criar um cookie, deve-se especificar um NameName e um e um ValueValue

Cada cookie deve ter um nome exclusivo Cada cookie deve ter um nome exclusivo para que ele possa ser identificado para que ele possa ser identificado posteriormente quando lido a partir do posteriormente quando lido a partir do navegadornavegador

Page 7: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Gravando cookiesGravando cookies

Pode-se também definir uma data de Pode-se também definir uma data de expiraçãoexpiração

Cookies expirados são excluídos pelo navegadoCookies expirados são excluídos pelo navegado

É possível definir a data de validade de um É possível definir a data de validade de um cookie para ser de 50 anos a partir de sua cookie para ser de 50 anos a partir de sua criaçãocriação

Se a expiração de do cookie não for Se a expiração de do cookie não for definida, ele será criado mas não será definida, ele será criado mas não será armazenado no disco rígido do usuárioarmazenado no disco rígido do usuário

Em vez disso, o cookie será mantido como Em vez disso, o cookie será mantido como parte das informações de sessão do parte das informações de sessão do usuário, assim que o usuário fechar o usuário, assim que o usuário fechar o navegador, o cookie será descartado navegador, o cookie será descartado

Page 8: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Gravando cookiesGravando cookies

Duas forma para armazenar 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);

Page 9: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Gravando cookiesGravando cookies

Cookies com mais de um valorCookies 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);

Page 10: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Lendo cookiesLendo cookies

Quando um navegador faz uma solicitação para o Quando um navegador faz uma solicitação para o servidor, ele envia os cookies para esse servidor servidor, ele envia os cookies para esse servidor junto com a solicitaçãojunto com a solicitação

Em aplicativos ASP.NET, pode-se ler os cookies Em aplicativos ASP.NET, pode-se ler os cookies usando o objeto HttpResquest, que está usando o objeto HttpResquest, que está disponível como a propriedade Request de sua disponível como a propriedade Request de sua classe classe PagePage

if(Request.Cookies["userName"] != null)if(Request.Cookies["userName"] != null)

Label1.Text=Server.HtmlEncode(Request.Cookies["userName"Label1.Text=Server.HtmlEncode(Request.Cookies["userName"].Value); ].Value);

if(Request.Cookies["userName"] != null) {if(Request.Cookies["userName"] != null) {

HttpCookie aCookie = Request.Cookies["userName"];HttpCookie aCookie = Request.Cookies["userName"];

Label1.Text = Server.HtmlEncode(aCookie.Value);Label1.Text = Server.HtmlEncode(aCookie.Value);

} }

Page 11: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Lendo cookiesLendo cookies

Observe também que o método Observe também que o método HtmlEncode foi chamado para codificar o HtmlEncode foi chamado para codificar o conteúdo de um cookie antes de exibi-lo conteúdo de um cookie antes de exibi-lo na páginana página

Isso garante que um usuário mal-Isso garante que um usuário mal-intencionado não adicionou script intencionado não adicionou script executável no cookieexecutável no cookie

Page 12: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Lendo CookiesLendo Cookies

Leitura de subchavesLeitura de subchaves

if(Request.Cookies["userInfo"] != null) {if(Request.Cookies["userInfo"] != null) {

Label1.Text=Server.HtmlEncode(Request.Cookies["useLabel1.Text=Server.HtmlEncode(Request.Cookies["userInfo"]["userName"]);rInfo"]["userName"]);

Label2.Text=Server.HtmlEncode(Request.Cookies["useLabel2.Text=Server.HtmlEncode(Request.Cookies["userInfo"]["lastVisit"]);rInfo"]["lastVisit"]);

} }

Page 13: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Lendo coleções de cookiesLendo coleções de cookies

System.Text.StringBuilder output = new System.Text.StringBuilder output = new System.Text.StringBuilder();System.Text.StringBuilder();

HttpCookie aCookie;HttpCookie aCookie;

for(int i=0; i<Request.Cookies.Count; i++) {for(int i=0; i<Request.Cookies.Count; i++) {

aCookie = Request.Cookies[i];aCookie = Request.Cookies[i];

output.Append("Cookie name = " + output.Append("Cookie name = " + Server.HtmlEncode(aCookie.Name) + "<br />"); Server.HtmlEncode(aCookie.Name) + "<br />"); output.Append("Cookie value = " + output.Append("Cookie value = " + Server.HtmlEncode(aCookie.Value) + "<br /><br Server.HtmlEncode(aCookie.Value) + "<br /><br />");/>");

}}

Label1.Text = output.ToString(); Label1.Text = output.ToString();

Page 14: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Lendo coleções com subchavesLendo coleções com subchaves

for(int i=0; i<Request.Cookies.Count; i++) {for(int i=0; i<Request.Cookies.Count; i++) {aCookie = Request.Cookies[i]; output.Append("Name aCookie = Request.Cookies[i]; output.Append("Name = " + aCookie.Name + "<br />");= " + aCookie.Name + "<br />");if(aCookie.HasKeys) { if(aCookie.HasKeys) {

for(int j=0; j<aCookie.Values.Count; j++) {for(int j=0; j<aCookie.Values.Count; j++) {subkeyName=Server.HtmlEncode( aCookie.Values.AllKeys[j]);subkeyName=Server.HtmlEncode( aCookie.Values.AllKeys[j]);subkeyValue=Server.HtmlEncode(aCookie.Values[j]);subkeyValue=Server.HtmlEncode(aCookie.Values[j]);output.Append("Subkey name = " + subkeyName + "<br />");output.Append("Subkey name = " + subkeyName + "<br />");output.Append("Subkey value = " + subkeyValue + "<br output.Append("Subkey value = " + subkeyValue + "<br /><br />");/><br />");

} } } } else { else {

output.Append("Value="+Server.HtmlEncode(aCookie.Voutput.Append("Value="+Server.HtmlEncode(aCookie.Value) + "<br /><br />"); alue) + "<br /><br />"); }}

}}Label1.Text = output.ToString(); Label1.Text = output.ToString();

Page 15: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

ExercícioExercício

Criar um programa que salve em um Criar um programa que salve em um cookie as opções selecionadas por um cookie as opções selecionadas por um usuário na página e depois carregue as usuário na página e depois carregue as opções selecionadas em um listbox, opções selecionadas em um listbox, conforme exemplo:conforme exemplo:

Page 16: Tecnologia para Web Cookies Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

BibliografiaBibliografia

Ler artigo: Ler artigo: http://msdn2.microsoft.com/pt-br/library/http://msdn2.microsoft.com/pt-br/library/ms178194(VS.80).aspxms178194(VS.80).aspx

http://br.mozdev.org/firefox/cookieshttp://br.mozdev.org/firefox/cookies