O método FormsAuthentication.SignOut não impede ataques de resposta de cookie nas aplicações do ASP.NET

Traduções de Artigos Traduções de Artigos
Artigo: 900111 - Ver produtos para os quais este artigo se aplica.
Informações sobre o Beta
Este artigo aborda uma versão beta de um Microsoft produto. As informações contidas neste artigo são fornecidas como está e estão sujeitas a alterações sem aviso prévio.

Não fornece suporte técnico formal está disponível a partir da Microsoft para este produto beta. Para obter informações sobre como obter suporte para uma versão beta, consulte a documentação incluída com o Beta ficheiros do produto ou verificação da Web local onde transferiu o.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo descreve as limitações do método FormsAuthentication.SignOut e fornece mais informações sobre a facilitar a ataques de resposta de cookie quando um cookie de autenticação de formulários pode ter sido obtido por um utilizador mal intencionado. Este artigo apresenta os seguintes métodos que pode utilizar para ajudar a reduzir ataques de reprodução de cookie nas aplicações do Microsoft ASP.NET:
  • ajudar a proteger a aplicação utilizando SSL
    aplicação Configurar na Web no Microsoft (IIS) pelo que esse SSL é necessária. Se o fizer, certifique-se de que a funcionalidade de autenticação de formulários nunca emite um cookie através de uma ligação de SSL não.
  • Impor TTL e expiração absoluta
    Se utilizar um TTL curto, pode ajudar a reduzir a probabilidade de um ataque. Também deve utilizar expiração absoluta em vez de deslizamento expiração.
  • autenticação de cookies e formulários HttpOnly utilizado no ASP.NET 2.0
    Os cookies de autenticação no ASP.NET 2.0, formulários são HttpOnly cookies. HttpOnly cookies não podem ser acedidos através de script do cliente. Esta funcionalidade ajuda a reduzir as hipóteses de ataques de reprodução.
  • utilizar a classe de associação no ASP.NET 2.0
    no ASP.NET 2.0, pode ajudar a proteger os cookies de autenticação de formulários de serem utilizadas maliciosamente armazenando informações de utilizador no objecto MembershipUser .

INTRODUÇÃO

Este artigo descreve um problema que poderá ocorrer se um cookie de autenticação de formulários é obtido por um utilizador mal intencionado. Neste cenário, o cookie pode ser utilizado para autenticar um formulários autenticação aplicação do ASP.NET após FormsAuthentication.SignOut método foi chamado. Um utilizador mal intencionado não teria como obter o cookie de autenticação de formulários de outro utilizador a menos que o sistema do utilizador foi comprometido.

Mais Informação

O método FormsAuthentication.SignOut remove o cookie de autenticação de formulários do computador cliente. No entanto, o método FormsAuthentication.SignOut não armazena qualquer representação persistente no servidor do utilizador terminar a sessão. Por conseguinte, se o cookie de autenticação de formulários não está protegido adequadamente e o cookie de forma maliciosa é obtido por terceiros, esse cookie pode ser utilizado para autenticar o servidor depois do método FormsAuthentication.SignOut ter sido chamado. Este comportamento pode ocorrer até à expiração da permissão de autenticação de formulários contidas no cookie.

Nota Apesar de um cookie ter também expiração, sempre a autenticação de formulários utiliza a hora de expiração contido no formulários permissão de autenticação quando a autenticação por formulários determina se a permissão é considerada expirou.

Para ajudar a reduzir as hipóteses de um ataque, ajudar a melhorar a protecção do cookie de autenticação de formulários utilizando (Secure Sockets Layer). Deverá também utilizar expiração absoluta em vez de um cursor de deslocamento de validade. Expiração absoluta limita o tempo restante (TTL) para a permissão de autenticação de formulários.

ASP.NET 2.0 também adiciona funcionalidades que pode utilizar para ajudar a reduzir ataques de reprodução utilizando o cookie de autenticação de formulários. Pode utilizar a classe de associação no ASP.NET 2.0 para promover uma solução mais segura para terminar sessão aos utilizadores de autenticação de formulários.

Ajudar a proteger a aplicação utilizando SSL

Ao configurar a aplicação da Web no Microsoft (IIS) para que seja necessário SSL, todas as informações transmitidas entre o cliente e o navegador da Web serão encriptadas. Quando utilizar este método, o atributo requireSSL o <forms> elemento também deve ser definido como true . Quando este atributo é Verdadeiro , um browser compatível não enviará o cookie a menos que a ligação está a ser enviada através de SSL e a funcionalidade de autenticação de formulários nunca emite um cookie através de uma ligação de SSL não.

Em casos em que um site tem algumas páginas que estão em SSL e outras páginas que não estão sob o SSL, o atributo requireSSL foi concebido para se certificar de que o browser não envia o cookie de autenticação de formulários quando forem solicitadas não SSL páginas. No entanto, o agente de utilizador tem a responsabilidade para aplicar a regra que o browser não envia o cookie de autenticação de formulários quando forem solicitadas não SSL páginas. Por conseguinte, se configurar a aplicação completa para exigir SSL, ajuda melhorar a segurança.

Para obter mais informações sobre como configurar uma aplicação para SSL, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
299875Como implementar SSL num computador Windows 2000 IIS 5.0

Impor TTL e expiração absoluta

Ao utilizar um TTL breve que pode ser configurado através do atributo de tempo de espera do <forms> elemento, pode ajudar reduzir o risco de um ataque de reprodução do cookie. Também deve verificar que o atributo slidingExpiration deve ser definido como false . Por predefinição, a definição no ASP.NET 2.0 é true .

Utilizar autenticação de cookies e formulários HttpOnly no ASP.NET 2.0

No ASP.NET 2.0, os cookies de autenticação de formulários são HttpOnly cookies. Cookies HttpOnly não podem ser acedidos utilizando um script de cliente. No entanto, a propriedade HttpOnly só está disponível no Microsoft Internet Explorer 6 Service Pack 1 (SP1). Anterior user agents ignorará a propriedade.

Para obter mais informações sobre cookies HttpOnly, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms533046.aspx

Utilizar a classe de associação no ASP.NET 2.0

Quando implementar a autenticação por formulários no ASP.NET 2.0, pode optar por armazenar informações de utilizador num fornecedor de membros . Esta opção é uma nova funcionalidade que é introduzida no ASP.NET 2.0. O objecto MembershipUser contém utilizadores específicos.

Se o utilizador tiver sessão iniciado, pode armazenar estas informações na propriedade do objecto MembershipUser comentário . Se utilizar esta propriedade, pode desenvolver um mecanismo para reduzir problemas de reprodução de cookies no ASP.NET 2.0. Este mecanismo seria siga estes passos:
  1. Criar um HttpModule cria hooks evento PostAuthenticateRequest .
  2. Se um objecto FormsIdentity é na propriedade HttpContext.User , a classe FormsAuthenticationModule reconhece a permissão de autenticação de formulários como válido. Em seguida, a classe personalizada HttpModule obtém uma referência à instância MembershipUser associada ao utilizador autenticado.
  3. Examine a propriedade comment para determinar se o utilizador actualmente tem sessão iniciada.

    importante Tem de guardar informações na propriedade comentário que indica quando o utilizador explicitamente terminada. Além disso, tem de limpar as informações na propriedade comentário quando inicia o cliente eventualmente sessão novamente.
Se o utilizador não tiver actualmente sessão como indicado pela propriedade comment , terá de efectuar as seguintes acções:
  1. Desmarque o cookie.
  2. Defina a propriedade Response.status para 401.
  3. Efectuar uma chamada para o método Response.End que redireccionará implicitamente o pedido para a página de início de sessão.
Utilizando este método, o cookie de autenticação de formulários será apenas aceite se o utilizador não foi explicitamente assinado e a permissão de autenticação de formulários ainda não tenha expirado.

Referências

Para obter mais informações sobre como ajudar a proteger os cookies de autenticação de formulários utilizando SSL, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
813829Ajude a autenticação por formulários seguro utilizando Secure Sockets Layer (SSL)

Propriedades

Artigo: 900111 - Última revisão: 24 de maio de 2007 - Revisão: 4.3
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 2.0
Palavras-chave: 
kbmt kbauthentication kbprogramming kbiis kbsecurity kbservicepack kbhowto kbinfo KB900111 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 900111

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com