ID do artigo: 900111 - Última revisão: quinta-feira, 24 de maio de 2007 - Revisão: 4.3

O método FormsAuthentication.SignOut não impede ataques de resposta de cookie em aplicativos ASP.NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Informações de versão beta
Este artigo aborda uma versão beta de um Microsoft produto. As informações neste artigo são fornecidas como - é e estão sujeitas a alterações sem aviso prévio.

Nenhum suporte formal está disponível da Microsoft para este produto beta. Para obter informações sobre como obter suporte para uma versão beta, consulte a documentação que acompanha o Beta arquivos do produto ou verifique o local da Web onde você a versão foi baixada.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo descreve as limitações do método FormsAuthentication.SignOut e fornece mais informações sobre como facilitar ataques de resposta de cookie quando um cookie de autenticação de formulários pode ter sido obtido por um usuário mal-intencionado. Este artigo apresenta os seguintes métodos que você pode usar para ajudar a reduzir ataques de repetição de cookie em aplicativos Microsoft ASP.NET:
  • ajudar a proteger o aplicativo usando SSL
    aplicativo Configurar na Web no Microsoft (IIS) que SSL é necessário. Se você fizer isso, certeza que o recurso de autenticação de formulários nunca emitirá um cookie em uma conexão SSL não.
  • Aplicar TTL e expiração absoluta
    Se você usar um TTL pequeno, pode ajudar reduzir as chances de tal ataque. Você também deve usar expiração absoluta em vez de Deslizar expiração.
  • uso HttpOnly cookies e autenticação de formulários no ASP.NET 2.0
    Os cookies de autenticação no ASP.NET 2.0, formulários são cookies HttpOnly. Os cookies HttpOnly não podem ser acessados por meio de script de cliente. Essa funcionalidade ajuda a reduzir as chances de ataques de repetição.
  • Use a classe Membership no ASP.NET 2.0
    no ASP.NET 2.0, você pode proteger cookies de autenticação de formulários sejam usados maliciosamente armazenando informações de usuário no objeto MembershipUser .

INTRODUÇÃO

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

Mais Informações

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 usuário sair da rede. Portanto, se o cookie de autenticação de formulários não está adequadamente protegido e o cookie de maneira mal-intencionada é obtido por um terceiro, esse cookie pode ser usado para autenticar para o servidor depois que o método FormsAuthentication.SignOut tiver sido chamado. Esse comportamento pode ocorrer até a expiração do tíquete de autenticação de formulários que contidas no cookie.

Observação Embora um cookie também tem de expiração, autenticação de formulários sempre usa o tempo de expiração que está contido dentro de formulários tíquete de autenticação quando a autenticação de formulários determina se o tíquete é considerado expirou.

Para ajudar a reduzir as chances de tal ataque, ajudar a melhorar a proteção do cookie de autenticação de formulários usando SSL (Secure Sockets LAYER). Você também deve usar expiração absoluta em vez de uma expiração sliding. Expiração absoluta restringe o tempo de vida (TTL) para o tíquete de autenticação de formulários.

O ASP.NET 2.0 também adiciona funcionalidade que você pode usar para ajudar a reduzir ataques de repetição usando o cookie de autenticação de formulários. Você pode usar a classe Membership no ASP.NET 2.0 para promover uma solução mais segura para assinar os usuários de autenticação de formulários.

Ajudar a proteger o aplicativo usando SSL

Configurando o aplicativo da Web no Microsoft Internet Information Services (IIS) para que o SSL é necessário, todas as informações que passam entre o cliente e o navegador da Web serão criptografadas. Ao usar esse método, o atributo requireSSL do <forms> elemento também deve ser definido como true . Quando esse atributo é true , um navegador compatível não enviará o cookie a menos que a conexão está sendo enviada através de SSL e o recurso de autenticação de formulários nunca emitirá um cookie em uma conexão SSL não.

Em casos onde um site tem algumas páginas que estão sob SSL e outras páginas que não estão sob SSL, o atributo requireSSL foi projetado para garantir que o navegador não envia o cookie de autenticação de formulários quando páginas não-SSL são solicitadas. No entanto, o agente de usuário tem a responsabilidade para aplicar a regra que o navegador não envia o cookie de autenticação de formulários quando páginas não-SSL são solicitadas. Portanto, se você configurar o aplicativo inteiro para exigir SSL, você ajudar aumentar a segurança.

Para obter mais informações sobre como configurar um aplicativo para SSL, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
299875  (http://support.microsoft.com/kb/299875/ ) Como implementar o SSL em um computador Windows 2000 IIS 5.0

Aplicar TTL e expiração absoluta

Usando um TTL curto que pode ser configurado através do atributo tempo limite do <forms> elemento, você pode ajudar a reduzir o risco de um ataque de repetição de cookie. Você também deve observar que o atributo slidingExpiration deve ser definido como false . Por padrão, a configuração no ASP.NET 2.0 é true .

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

No ASP.NET 2.0, os cookies de autenticação de formulários são os cookies HttpOnly. Os cookies HttpOnly não podem ser acessados usando um script de cliente. No entanto, a propriedade HttpOnly somente está disponível no Microsoft Internet Explorer 6 Service Pack 1 (SP1). Agentes de usuário anterior ignorará a propriedade.

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

Usar a classe Membership no ASP.NET 2.0

Ao implementar autenticação de formulários no ASP.NET 2.0, você tem a opção de armazenar informações do usuário em um provedor de associações . Esta opção é um recurso novo que é apresentado em ASP.NET 2.0. O objeto MembershipUser contém usuários específicos.

Se o usuário estiver conectado, você pode armazenar essas informações na propriedade comentário do objeto MembershipUser . Se você usar essa propriedade, você pode desenvolver um mecanismo para reduzir problemas de repetição de cookie no ASP.NET 2.0. Esse mecanismo seria execute estas etapas:
  1. Criar um HttpModule que conecta o evento PostAuthenticateRequest .
  2. Se um objeto FormsIdentity estiver na propriedade HttpContext.User , a classe FormsAuthenticationModule reconhece o tíquete de autenticação de formulários como válido. Em seguida, a classe HttpModule personalizado obtém uma referência à instância MembershipUser que está associada com o usuário autenticado.
  3. Você examinar a propriedade Comment para determinar se o usuário está conectado no momento.

    importante Você deve armazenar informações na propriedade comentário que indica quando o usuário explicitamente desconectado. Além disso, você deve limpar as informações que está na propriedade comentário quando o cliente eventualmente entra novamente.
Se o usuário não está conectado atualmente conforme indicado pela propriedade Comment , será necessário executar as seguintes ações:
  1. Desmarque o cookie.
  2. Defina a propriedade Response.Status para 401.
  3. Fazer uma chamada para o método de Response.End implicitamente redirecionará a solicitação para a página de logon.
Usando esse método, o cookie de autenticação de formulários será aceito somente se o usuário não foi assinado explicitamente check-out e o tíquete 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 usando SSL, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
813829  (http://support.microsoft.com/kb/813829/ ) Ajude a autenticação de formulários seguro usando Secure Sockets Layer (SSL)

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áticaTraduçã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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 900111  (http://support.microsoft.com/kb/900111/en-us/ )