Cookies

Nesta aula você irá aprender como manipular cookies em C# com WebForms, verá as diferenças entre cookies e sessions e cookie HttpOnly.

assinaturaAssine nossa Comunidade

Web Forms -Cookies

Os Cookies são armazenados no browser com opção de configurar, de que maneira as informações serão trafegas, por exemplo, por domínio ou por área, que são as páginas.

Cookies - Server e Client/Server

Cookies do tipo Client/Server, os dados são manipulados por javascript pois são processados no Browser, onde as informações são armazenadas no header da requisição e são enviadas para o servidor, que obtém estes dados e processa retornando para o Browser.

Cookies do tipo Server é preciso fazer um request para o servidor e então o servidor irá gravar no Header e toda a área que tiver sido configurada, vai transacionar este cookie, que não poderá ser manipulado pelo Browser.

Um exemplo de utilização de cookies do tipo client/server é quando o javascript precisar saber se o usuário está logado ou não. Caso contrário, poderá ser utilizado um cookie do tipo Server.

Os cookies do tipo Server são mais seguros, pois dificulta a manipulação dos dados pelo browser.

Então, toda vez que a técnica de cookie é utilizada, os dados são armzenados diretamente no header, que são trafegados de acordo com o domínio configurado. O cookie também possui um tempo de expiração

Criar cookie no C#

Definimos um cookie no C# através da classe HttpCookie e criamos um objeto de instância desta classe, passando parâmetros de nome e o valor

Com a instância da classe criada, podemos configurar atributos, como por exemplo, o domínio (Domain), tempo de Expiração (Expires ) e se será um Http Server ou Client/Server(HttpOnly).

  • Server - HttpOnly: true
  • Client/Server - HttpOnly: false

Para adicionar o cookie, utilizamos Response.Cookies.Add

  
    public partial class _Default : Page
    {

      protected void Page_Load(object sender, EventArgs e)
      {
       HttpCookie cookie = new HttpCookie("cnome", "123456");
       cookie.Expires.Add(new TimeSpan(2,0,0));
       cookie.HttpOnly = false;
       Response.Cookies.Add(cookie);

      }

    }  
   

Vamos verificar se o cookie foi criado com os passos a seguir:

  • Clicar com o botão direito do mouse no navegador e selecionar o menu Inspecionar Elemento;
  • Clicar na Aba Application;
  • Em Storage, clicar na opção Cookies.

Podemos ver que o cookie chamado cnome, foi criado com sucesso, com o valor (value) 123456.

Para carregar este cookie em outra tela, utilizamos Request.Cookies, como mostra o exemplo abaixo:

  
    public partial class Contact : Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
       Response.Write(Request.Cookies["cnome"].value.ToString());
      }
    }  
   

Como este cookie é do tipo Client/Server, podemos obtê-lo via javascript.

Para demonstrar este exemplo, instalamos dois plugins: um plugin do JQuery e o outro JQuery.Cookie. Assim podemos ler e alterar o cookie através do javascript.Então, no console do navegador, podemos alterar e obter o cookie cnome , pois o atributo httpOnly foi definido como false.

$cookie('cnome', 'ldsdsds');

"cnome="ldsdsds'

$cookie('cnome');

"ldsdsds"

Vamos alterar o cookie para o tipo Server, configurando HttpOnly como true e tentar alterar o cookie através do console do browser:

  
    public partial class _Default : Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
       HttpCookie cookie = new HttpCookie("cnome", "123456");
       cookie.Expires.Add(new TimeSpan(2,0,0));
       cookie.HttpOnly = true;
       Response.Cookies.Add(cookie);

      }
    }  
   

Note que, ao tentar obter o cookie, não será mais possivel e uma mensagem undefined é mostrada no console:

$cookie('cnome');

undefined

Validação de Cookies

Quando estamos em outra página e queremos validar se um determinado cookie existe ou não, utilizamos o Request.Cookies, que retorna um objeto. Caso este objeto seja diferente de nulo, significa que o conteúdo existe:

  
    public partial class Contact : Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
        if (Request.Cookies["cookieClient"] != null)
        {
          Response.Write(Request.Cookies["cookieClient"].value.ToString());
        }
        
      }
    }  
   

Para verificar o cookie no Header da requisição http:

  • Clicar com o botão direito do mouse no navegador e selecionar o menu Inspecionar Elemento;
  • Clicar na Aba Network;
  • Clicar na página na qual foi feito request, por exemplo, localhost;
  • Clicar em localhost;
  • Clicar na aba Headers;
  • Em Request Headers -> Cookie:, note que existe o cookie cnome e cookieClient.

Podemos excluir os cookies armazenados através da configuração do computador, na opção Limpar Cookies.

Cookies

Nesta aula você irá aprender como manipular cookies em C# com WebForms, verá as diferenças entre cookies e sessions e cookie HttpOnly.

Próximas Aulas:
assinaturaAssine nossa Comunidade

Web Forms -Cookies

Os Cookies são armazenados no browser com opção de configurar, de que maneira as informações serão trafegas, por exemplo, por domínio ou por área, que são as páginas.

Cookies - Server e Client/Server

Cookies do tipo Client/Server, os dados são manipulados por javascript pois são processados no Browser, onde as informações são armazenadas no header da requisição e são enviadas para o servidor, que obtém estes dados e processa retornando para o Browser.

Cookies do tipo Server é preciso fazer um request para o servidor e então o servidor irá gravar no Header e toda a área que tiver sido configurada, vai transacionar este cookie, que não poderá ser manipulado pelo Browser.

Um exemplo de utilização de cookies do tipo client/server é quando o javascript precisar saber se o usuário está logado ou não. Caso contrário, poderá ser utilizado um cookie do tipo Server.

Os cookies do tipo Server são mais seguros, pois dificulta a manipulação dos dados pelo browser.

Então, toda vez que a técnica de cookie é utilizada, os dados são armzenados diretamente no header, que são trafegados de acordo com o domínio configurado. O cookie também possui um tempo de expiração

Criar cookie no C#

Definimos um cookie no C# através da classe HttpCookie e criamos um objeto de instância desta classe, passando parâmetros de nome e o valor

Com a instância da classe criada, podemos configurar atributos, como por exemplo, o domínio (Domain), tempo de Expiração (Expires ) e se será um Http Server ou Client/Server(HttpOnly).

  • Server - HttpOnly: true
  • Client/Server - HttpOnly: false

Para adicionar o cookie, utilizamos Response.Cookies.Add

  
    public partial class _Default : Page
    {

      protected void Page_Load(object sender, EventArgs e)
      {
       HttpCookie cookie = new HttpCookie("cnome", "123456");
       cookie.Expires.Add(new TimeSpan(2,0,0));
       cookie.HttpOnly = false;
       Response.Cookies.Add(cookie);

      }

    }  
   

Vamos verificar se o cookie foi criado com os passos a seguir:

  • Clicar com o botão direito do mouse no navegador e selecionar o menu Inspecionar Elemento;
  • Clicar na Aba Application;
  • Em Storage, clicar na opção Cookies.

Podemos ver que o cookie chamado cnome, foi criado com sucesso, com o valor (value) 123456.

Para carregar este cookie em outra tela, utilizamos Request.Cookies, como mostra o exemplo abaixo:

  
    public partial class Contact : Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
       Response.Write(Request.Cookies["cnome"].value.ToString());
      }
    }  
   

Como este cookie é do tipo Client/Server, podemos obtê-lo via javascript.

Para demonstrar este exemplo, instalamos dois plugins: um plugin do JQuery e o outro JQuery.Cookie. Assim podemos ler e alterar o cookie através do javascript.Então, no console do navegador, podemos alterar e obter o cookie cnome , pois o atributo httpOnly foi definido como false.

$cookie('cnome', 'ldsdsds');

"cnome="ldsdsds'

$cookie('cnome');

"ldsdsds"

Vamos alterar o cookie para o tipo Server, configurando HttpOnly como true e tentar alterar o cookie através do console do browser:

  
    public partial class _Default : Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
       HttpCookie cookie = new HttpCookie("cnome", "123456");
       cookie.Expires.Add(new TimeSpan(2,0,0));
       cookie.HttpOnly = true;
       Response.Cookies.Add(cookie);

      }
    }  
   

Note que, ao tentar obter o cookie, não será mais possivel e uma mensagem undefined é mostrada no console:

$cookie('cnome');

undefined

Validação de Cookies

Quando estamos em outra página e queremos validar se um determinado cookie existe ou não, utilizamos o Request.Cookies, que retorna um objeto. Caso este objeto seja diferente de nulo, significa que o conteúdo existe:

  
    public partial class Contact : Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
        if (Request.Cookies["cookieClient"] != null)
        {
          Response.Write(Request.Cookies["cookieClient"].value.ToString());
        }
        
      }
    }  
   

Para verificar o cookie no Header da requisição http:

  • Clicar com o botão direito do mouse no navegador e selecionar o menu Inspecionar Elemento;
  • Clicar na Aba Network;
  • Clicar na página na qual foi feito request, por exemplo, localhost;
  • Clicar em localhost;
  • Clicar na aba Headers;
  • Em Request Headers -> Cookie:, note que existe o cookie cnome e cookieClient.

Podemos excluir os cookies armazenados através da configuração do computador, na opção Limpar Cookies.