
Olá pessoal,
gostaria de falar um pouco de Cookie hoje com vocês. O Cookie pode ajudar muito
site, praticamente 90% dos sites existentes hoje na internet utilizam a
técnica. Agora, pra quê utilizar esse tipo de tecnologia? Espero poder ajudar a
responder essa pergunta.
Requisitos:
. Ferramenta de
desenvolvimento: Visual Studio.NET 2008 SP2
. Framework 3.5
. Linguagem
C#.NET
Pequena Explicação
O Cookie funciona para manter algumas
informações pessoais do usuário, mas as que não são irrelevantes e inseguras;
isto é; não deve ser colocado senha, ou qualquer outro código que faz o sistema
ficar inseguro.
Geralmente
é gravada uma busca no site, um produto do e-commerce acessado, um resultado
gerado ou até mesmo uma configuração específica do site. Por exemplo: um site
disponibiliza a dinamicidade de escolher usar uma cor azul ou verde, no meu
caso escolho a azul. Se sair do site e voltar depois, o mesmo deve estar azul e
não verde. Essa informação é ótima gravar como cookie e não no banco de dados.
Você já acessou o site do Submarino e escolheu um produto que resolveu não
comprar? Depois que voltou no site, estava lá o último produto visualizado,
essa informação é gravada via cookie. Não compensa gravar em banco de dados,
gerar tráfego, espaço e tudo mais.
O
Cookie tem uma data para expirar e pode ser definida pelo programador, ou seja,
você. Uma dica importante é, procure deixar sempre as informações dentro de
forma criptografada; assim não corre tanto risco no caso das informações
abertas.

Código
Tecnicamente, mostro dois métodos
escritos em C#.NET e que servem para criar e ler o cookie. Como falado
anteriormente, a melhor coisa é gerar com informações irrelevantes como
configuração de uma página, cores, ip, em resumo dados que não comprometem a
segurança do sistema.
Um problema que aconteceu no início do
Orkut foi que, descobriram que tinham os dados dos usuários e códigos dentro do
cookie, dessa forma o pessoal (mais esperto) que queria entrar no orkut do
outro com perfil diferente, pegava esse código e colocava no cookie da própria
máquina. Automaticamente o perfil da outra pessoa aparecia na tela.
Qualquer coisa poderia ser feita, pois
o perfil era da outra pessoa. Funcionava perfeitamente a mudança de perfil
indevida, mas isso foi devido à falta de segurança colocada no cookie e
informações relevantes do sistema. Com o passar do tempo eles mudaram isso.
Método para criar
o cookie.
private void CriarCookie(string usuario)
{
HttpCookie cookie = new
HttpCookie("SITE");
//cria cookie com o
ip da maquina
cookie.Values.Add("IP",
this.Page.Request.UserHostAddress.ToString());
cookie.Values.Add("USERNAME",
usuario);
//colocando o cookie para expirar
cookie.Expires = DateTime.Now.AddDays(365);
this.Page.Response.AppendCookie(cookie);
}
|
Code 1.1
Método para ler o
cookie.
private HttpCookie ReadCookie()
{
try
{
return this.Page.Request.Cookies["SITE"];
}
catch
{
return
null;
}
}
|
Code 1.2
Veja o Code 1.1 e 1.2 acima. Note que o
primeiro cria o cookie com o nome do SITE, coloquei [SITE] para que seja bem
identificado, por exemplo: coloque o endereço do seu site (www.mauriciojunior.org).
O segundo método, retorna um tipo
HttpCookie que pega com o nome do seu site, no meu caso [SITE]. Se tivesse
colocado o endereço do meu site, teria que colocar ele no segundo método.
Posso usar as informações no site da
seguinte forma. (Code 1.3).
HttpCookie cookie = ReadCookie();
if (cookie != null)
{
string usuario = cookie["USERNAME"];
if (usuario.Length > 0)
{
txtUsuario.Text =
usuario;
}
else
{
txtUsuario.Focus();
}
}
|
Code 1.3
Note que chamo o método ReadCookie() e
verifico se ele é null, ou seja, se ele existe. Se existir pego com a variável
cookie o nome do usuário gravado anteriormente. Depois atribuo ao campo
existente na tela.
É bem simples e fácil utilizar cookie,
mas sempre coloque na cabeça a segurança dessas informações, pois é um arquivo
que fica na máquina do usuário e não tem controle sobre ele.
Bom, fico por aqui e qualquer dúvida
pode entrar em contato pelo site.
Mauricio Junior
www.mauriciojunior.org
blog.mauriciojunior.org