Protegendo Estado da Sessão

O estado de sessão do ASP.NET permite que você armazene e recupere valores para um usuário quando o usuário navega as diferentes páginas ASP.NET que compõem um aplicativo da Web.O estado de sessão do ASP.NET identifica solicitações do mesmo navegador durante uma janela de tempo limitada como uma sessão, e fornece uma maneira de manter valores de variáveis para a duração dessa sessão.As sessões do navegador são identificadas em um cookie de sessão ou em uma URL quando o estado de sessão for configurado como "cookieless".

Estado da sessão ASP.NET é ativado por padrão para todos os aplicativos ASP.NET e é configurado para usar cookies de sessão para identificar sessões navegador.

Estado da sessão ASP.NET armazena valores de sessão variável na memória por padrão, mas você também pode configurar o estado da sessão para armazenar valores de sessão variável em um servidor de estado, um servidor SQL ou um armazenamento de sessão de estado personalizado.

Enquanto as melhores práticas de codificação e configuração podem melhorar a segurança de seu aplicativo, também é importante que você continue protegendo seu aplicativo, atualizando através da última correção de segurança do Microsoft Windows e Internet Information Services (IIS), bem como com qualquer correção do Microsoft SQL Server, Active Directory e outras fontes de dados de seu aplicativo.

Para obter informações mais detalhadas sobre as práticas recomendadas para escrever código seguro e segurança de aplicativos, consulte o livro Escrevendo código seguro de Michael Howard e David LeBlanc e orientação fornecida por Microsoft padrões and Practices (https://www.Microsoft.com/Recursos/practices/padrão.mspx).

Proteger a Configuração de Estado de Sessão

O recurso de estado de sessão é ativado por padrão.Enquanto as configurações de configuração padrão são definidas para os valores mais seguros, você deve desativar o estado da sessão se isso não for necessário para seu aplicativo.Para obter informações sobre configurações de estado da sessão e seus valores padrão, consulte Elemento sessionState (Esquema de configurações do ASP.NET).

Protegendo Valores de Configuração

Ao armazenar informações confidenciais em um arquivo de configuração para um aplicativo, você deve criptografar os valores confidenciais usando a configuração protegida.Informações que são especialmente sensíveis incluem as chaves de criptografia armazenadas em elementos de configuração machineKey e sequências de conexão de origem de elemento e dados armazenados no elemento de configuração connectionStrings.Para obter mais informações, consulte Criptografando informações de configuração usando configuração protegida.

Proteger Conexões Com Uma Fonte de Dados do Estado de Sessão

Sequências de conexão

Como mencionado anteriormente, é importante para proteger informações confidenciais armazenadas em uma sequência de conexão com um computador executando SQL Server, o serviço de estado de sessão ou uma outra fonte de dados.Para manter a conexão ao seu servidor de dados seguro, é recomendável que você criptografe informações da sequência de conexão na configuração usando Configuração Protegida.Para obter mais informações, consulte Criptografando informações de configuração usando configuração protegida.

Conectando-se ao SQL Server usando segurança integrada

Você deve conectar a computadores executando SQL Server usando segurança integrada para evitar a possibilidade da sequência de conexão estar comprometida e identificação de usuário e senha estejam expostos.Quando você especifica uma conexão que usa segurança integrada para conectar-se a um computador que executa o SQL Server, o recurso de estado de sessão reverte para a identidade do processo.Você deve certificar-se que a identidade do processo que está executando o ASP.NET (por exemplo, o pool de aplicativos) é a conta do processo padrão ou uma conta de usuário restrito.Para obter mais informações, consulte ASP.NET Impersonation e Modos de estado de sessão.

Protegendo a Sessão de Identificação

Ao proteger o seu aplicativo e dados, é importante que você proteja o identificador da sessão de ser exposto a uma fonte indesejada através da rede e de ser usado em um ataque de repetição contra seu aplicativo.As seguintes recomendações podem melhorar a segurança de seu identificador da sessão.

  • Proteja seu aplicativo com Secure Sockets Layer (SSL).

  • Especifique um valor menor para a sessão Timeout.Além disso, considere forçar um redirecionamento no cliente que tenha o mesmo tamanho que o tempo limite da sessão usando um script de cliente ou adicionando um cabeçalho de atualização usando o método AddHeader conforme mostrado no exemplo o seguir.

    Response.AddHeader("Refresh", Session.Timeout & ";URL=Logoff.htm"
    Response.AddHeader("Refresh", Session.Timeout + ";URL=Logoff.htm";
    
  • Evite usar sessões cookieless.Se você especificar sessões cookieless, avise os usuários para não usar e-mail, marcador ou salvar links que contêm uma identificação de sessão.

  • Evite especificar modos de cookie do AutoDetect e UseDeviceProfile.

  • Permitir que os usuários saiam, em que ponto você deve chamar o método HttpSessionState.Abandon.Avisar ao usuário para fechar seu navegador após o logoff.

  • Quando usar sessão cookieless, configurar regenerateExpiredSessionID como true para sempre iniciar uma nova sessão quando um identificador de sessão expirado for fornecido.

Proteger Páginas da Web que Usam Estado de Sessão

Páginas do aplicativo que funcionam com dados confidenciais devem ser protegidos usando padrão de mecanismos segurança da Web, tais como usando Secure Sockets Layer (SSL) e exigir que os usuários sejam registrados para executar operações sensíveis como atualizar informações pessoais ou excluir de contas.

Além disso, páginas não devem expor dados de recurso confidenciais, como senhas e, em alguns casos, nomes de usuários no texto não criptografado.Garantir que páginas que exibam tais informações façam uso do SSL e mantê-las disponíveis somente para usuários autenticados.

Mensagens de Erro e Eventos

Exceções

Para evitar informações confidenciais sendo expostas a fontes indesejadas, configure seu aplicativo para não exibir mensagens de erro detalhadas ou para exibir mensagens de erro detalhadas somente quando o cliente é o próprio servidor Web.Para obter mais informações, consulte customErrors elemento (esquema configurações ASP.NET).

Log de Eventos

Se o servidor está executando o Windows Server 2003, você pode melhorar a segurança do seu aplicativo, assegurando o log de eventos e configurando parâmetros sobre o tamanho, retenção, e assim por diante do log de eventos para impedir uma negação indireta do ataque de serviço contra ele.

Provedores de Armazenamento de Estado de Sessão Personalizado

Quando se cria um provedor personalizado de armazenamento de estado de sessão, certifique-se que você siga práticas recomendadas de segurança para evitar ataques, como ataques de injeção SQL quando trabalha com um banco de dados.Quando fizer uso de um provedor personalizado de armazenamento de estado de sessão, certifique-se que o provedor foi revisado pelas melhores práticas de segurança.

Consulte também

Conceitos

Visão geral sobre Estado de sessão ASP.NET

Outros recursos

Protegendo sites da Web ASP.NET