none
Utilizar session para verificar se o usuário está logado é seguro? RRS feed

  • Pergunta

  • Olá pessoal,

    gostaria de saber se posso usar session para verificar se o usuário logou certinho no sistema ou não. Trabalho com windows forms por muito tempo, mas com web sou realmente um novato.

    Meu código ficou assim:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CMS.WebServer.Default" %>
    
    <% 
      //temos que verificar se existe login na session
      if ((Session["login"] == null) || (string.IsNullOrWhiteSpace(Session["login"].ToString())))
      {
        Response.Redirect("/Pages/IAM/Login.aspx");
      }
      else
      {
        Response.Redirect("www.terra.com.br");
      }
    
    %>
    

    É possível fazer uma injection na session para "logar de forma clandestina" no sistema?

    O que vocês aconselham sobre login e segurança?

    Obrigado


    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)
    quarta-feira, 15 de setembro de 2010 18:08

Respostas

  • Olá Leandro.

    Bem, o asp.net já tem um provedor para segurança web(usuário, grupo etc). E vc pode se beneficiar dele, já que o mesmo já controla a autenticação(parte de login) e autorização(ve se o usuário tem acesso). Isso é ótimo, pq vc pode falar que uma determinada página ou diretório só pode acessar pessoas logadas, ou somente pessoas logadas que estão em um determinado grupo de usuários.

    Aconselho fortemente a vc ler este artigo que ensina como emplementar(obs: não se assuste com o tamanho dele, é pq ele explica com riqueza de detalhes):

    http://www.linhadecodigo.com.br/artigo/1023/Entendendo-e-Implementando-Seguran%C3%A7a-no-ASPNET-20.aspx

    Qualquer dúvida na implementação do membership provider, fique a vontade para postar sua dúvida.

    Abraços.

    quarta-feira, 15 de setembro de 2010 18:24
  • Amigo, 

    eu não tenho nada contra sessions, inclusive uso bastante em minhas aplicações e o jeito que você implementou aí está correto, pode continuar com o desenvolvimento de sua aplicação.

    O que o Ricardo falou, é realmente útil, poupa bastante trabalho e a "lógica" do negócio é sensacional, vale a pena ler e implementar o membership provider, tem até uns esquemas de personalização do provider. Lembrando que esse provider também usa sessions, então só seria um esquema (talvez) melhor de se implementar.


    Gustavo Bergamo
    quarta-feira, 15 de setembro de 2010 18:31

Todas as Respostas

  • Olá Leandro.

    Bem, o asp.net já tem um provedor para segurança web(usuário, grupo etc). E vc pode se beneficiar dele, já que o mesmo já controla a autenticação(parte de login) e autorização(ve se o usuário tem acesso). Isso é ótimo, pq vc pode falar que uma determinada página ou diretório só pode acessar pessoas logadas, ou somente pessoas logadas que estão em um determinado grupo de usuários.

    Aconselho fortemente a vc ler este artigo que ensina como emplementar(obs: não se assuste com o tamanho dele, é pq ele explica com riqueza de detalhes):

    http://www.linhadecodigo.com.br/artigo/1023/Entendendo-e-Implementando-Seguran%C3%A7a-no-ASPNET-20.aspx

    Qualquer dúvida na implementação do membership provider, fique a vontade para postar sua dúvida.

    Abraços.

    quarta-feira, 15 de setembro de 2010 18:24
  • Amigo, 

    eu não tenho nada contra sessions, inclusive uso bastante em minhas aplicações e o jeito que você implementou aí está correto, pode continuar com o desenvolvimento de sua aplicação.

    O que o Ricardo falou, é realmente útil, poupa bastante trabalho e a "lógica" do negócio é sensacional, vale a pena ler e implementar o membership provider, tem até uns esquemas de personalização do provider. Lembrando que esse provider também usa sessions, então só seria um esquema (talvez) melhor de se implementar.


    Gustavo Bergamo
    quarta-feira, 15 de setembro de 2010 18:31
  • Pessoal, muito obrigado.

    Vou ler sim o artigo (assim que der uma brecha no tempo) e provavelmente vou implementar.

    Ambos responderam a dúvida, um dando uma solução melhor e outro afirmando que o que eu estava fazendo estava certo.

    Muito obrigado

    Abraços


    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)
    quarta-feira, 15 de setembro de 2010 19:01