Cookies em ASP.NET

Veremos neste artigo como funcionam e como utilizar cookies em aplicativos web na arquitetura ASP.NET. Aprenderemos os conceitos e como aplicar esta técnica simples em nossas aplicações.

Cookies?

Em muitos sites de lojas virtuais, fóruns de discussão, são exibidos dados como seu nome, e-mail e outras informações. Vamos tomar como exemplo a seguinte situação: você se cadastra em um site de e-comerce, preencheu seus dados e comprou alguns itens. Na próxima vez que você entrar no site, automaticamente, sem que você forneça qualquer informação, ele exibe o seu nome e os itens da sua ultima compra. Isso só se torna possível, porque foi usado um recurso chamado Cookies, que nada mais são que pequenos arquivos de texto enviados pelo site - contendo suas informações -, e gravados em sua máquina. Uma vez que um site tenha enviado um cookie para o browser, todo "Request" posterior feito pelo browser a este mesmo site, levará o Cookie de volta. Quando o usuário solicita uma página o browser faz uma pesquisa entre os cookies e vê quais foram enviados pelo site, e os envia junto com o Request.

Cuidado com os Cookies

Existem muitas discussões, quanto a segurança e a proteção das informações armazenadas em cookies. A tecnologia em si é razoavelmente segura, o problema está no que armazenamos nos arquivos. Os arquivos são alvo de Hackers que podem ler o conteúdo do cookie e danificar seus dados. Por estes e outros motivos, tome bastante cuidado na utilização dos cookies. Número de cartão de crédito, senhas, endereços, são informações consideradas PROIBIDAS. Como veremos no exemplo, um caso típico é o armazenamento do nome do usuário para uma saudação presonalizada, ou uma lista de últimos itens comprados em uma loja virtual, nada muito confidencial.

Manipulando os Cookies em .NET

Para trabalharmos com Cookies, o ASP.NET nos disponibiliza a classe HttpCookies, responsável pela configuração dos arquivos. Observe a declaração de um objeto do tipo HttpCookies no bloco de código abaixo:

Dim objCookie As New HttpCookie("saudacao")

Podemos definir vários cookies para serem enviados ao usuário, sempre respeitando o limite de 4K de informações por cookie.

O vai-e-vem dos Cookies

Para enviar e receber os cookies do usuário, utilizamos os objetos Response e Request. Como o objeto Response é o responsável pelo envio dos dados solicitados, é o por meio dele que os cookies seram enviados ao cliente. Para enviar os cookies ao usuário utilizamos o método AppendCookie, do objeto Response:

Response.AppendCookie(objCookie)
Response.AppendCookie(objCookie2)
Response.AppendCookie(objCookie3)

Para ler os cookies enviados pelo browser, utilizamos a propriedade Cookies do objeto Request, que é um HttpCookieCollection:

Dim objReturn = Request.Cookies("saudacao")

Trabalhando com Cookies

Vamos construir um exemplo utilizando os Cookies. No Visual Studio .NET, vá até o menu File>New>Project..., e na janela New Project, selecione as opções como mostrado na figura1.


Figura1 - Criando uma aplicação ASP.NET

Depois de criada a aplicação do tipo ASP.NET, coloque sobre a página dois componentes do tipo Button (figura2). No primeiro Button, digite o código da listagem a seguir:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
1. Dim objCookie As New HttpCookie("saudacao")
2. objCookie.Values.Add("Nome", "Laércio Queiroz")
3. objCookie.Values.Add("Email", "laercio_queiroz@hotmail.com")
4. objCookie.Expires.AddDays(120)
5. Response.AppendCookie(objCookie)
End Sub

No bloco de código acima, criamos o objeto do tipo HttpCookie (linha 1). O método construtor desta classe recebe como parâmetro o nome do arquivo cookie. Após termos criado o objeto da classe HttpCookie, adcionaremos as informações nos arquivos, pela propriedade Values (linhas 2,3), que armazena os pares de chave/valor de informações (Hash). Vimos também no código a referência a propriedade Expires (linhas 4), que determina uma "data de validade" para o cookie. Como citado anteriormente, os cookies retornam ao site que os enviou toda vez que é feita uma nova requisição ao site. Observe o bloco de código a seguir:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
1. Dim objReturn = Request.Cookies("saudacao")
2. nome.Text = "Seja bem-vindo, " & objReturn("Nome")
End Sub

No código acima, criamos outro objeto do tipo HttpCookie, que receberá os arquivo anexado ao request (linha 1). Na seguna linha atribuímos a propriedade Text de um Label, o nome armazenado no Cookie.


Figura3 - Utilizando Cookies

Conclusão

Implementar esta técnica em seus aplicativos é provavelmente a parte mais fácil deste artigo. O grande macete é saber o que enviar em seus arquivos, criando assim soluções mais seguras. Até a próxima!