Tornando navegação em sites do ASP.NET seguro

O site de navegação ASP.NET fornece a funcionalidade para manter um armazenamento central de links para todas as páginas de um site da Web.Os links pode então serem processados como listas ou menus de navegação em cada página, incluindo um controle específico de servidor Web.

Navegação do site do ASP.NET é mais usada com controles de navegação, como os controles SiteMapPath, SiteMapDataSource,TreeView,e Menu controles; ou ele é usado por meio de programação com as classes SiteMap e SiteMapProvider.As informações contidas neste tópico descrevem como melhorar a segurança dos recursos de navegação.

Enquanto as seguintes práticas recomendadas de codificação e configuração podem melhorar a segurança do seu aplicativo, também é importante que você mantenha continuamente atualizado o servidor de aplicativos com as atualizações de segurança mais recentes do Microsoft Windows e Serviços de Informações da Internet (IIS), assim como quaisquer atualizações de segurança para o Servidor Microsoft SQL ou outras associações de fontes de dados.Para obter mais informações, consulte o Windows atualização Site da Web.

Para obter informações detalhadas sobre as práticas recomendadas para escrever código seguro e proteção de aplicativos, consulte o livro, "Writing Secure Code" de Michael Howard e David LeBlanc e ver a orientação fornecida naPadrões e práticas da Microsoft Site da Web.Além disso, consulte Práticas de segurança básica para aplicativos da Web.

Neste tópico.

Configuração de Navegação Segura

Protegendo Dados de Mapa do Site

Ocultando Links de Navegação de Usuários Específicos

A API do Mapa do Site

Protegendo Implementações Personalizadas do Provedor de Mapa de Site

Mensagens de Erro e Eventos

Antivírus

Configuração de Navegação Segura

Os recursos ASP.NET de navegação no site estão habilitados por padrão.Eles podem ser desativados definindo o atributo enabled para o elemento siteMap para false no arquivo de configuração (Web.config).A seção a seguir aborda segurança de dados relacionados a navegação no arquivo Web.config.Para obter informações sobre configurações de navegação e seus valores padrão, consulte siteMap elemento (esquema configurações ASP.NET).

Protegendo Valores de Configuração

Você não precisará proteger definições de configuração de navegação que estão contidas em um arquivo Web.config se você usar o provedor de mapa de sites padrão do ASP.NET.Contudo, se você quiser implementar um provedor personalizado de mapa de site que utiliza um banco de dados e você armazenar a string de conexão do banco de dados em um arquivo de configuração, siga as recomendações em Proteção de acesso a dados para criptografar a string de conexão.

Em um ambiente hospedado, o arquivo de configuração deve negar direitos de substituição para o elemento siteMap elemento (esquema configurações ASP.NET) para ajudar a impedir que alguém reconfigure o site para usar um outro mapa do site ou provedor de mapa de sites.Para obter mais informações, consulte Bloqueando Definições de Configuração.Além disso, consulte Segurança de aplicativos ASP.NET em ambientes hospedados.

Mapeamento de URL

URLs podem ser mapeadas em um arquivo de configuração para uma URL amigável usando o elemento urlMappings elemento (esquema configurações ASP.NET) no arquivo Web.config.ASP.NET só permite aplicativos relativos a sintaxe, por exemplo, ~/filename.aspx.Em outras palavras, o ASP.NET não permite que URLs mapeadas apontem para uma página que esteja fora do aplicativo.Isso ajuda a proteger contra qualquer tentativa de um cliente ISP de exibir uma página que está fora do aplicativo em um ambiente hospedado.

Protegendo Dados de Mapa do Site

Por padrão, o ASP.NET é configurado para proteger arquivos com extensões de nome de arquivo conhecidas— como .sitemap — de serem descarregados por um cliente.Para ajudar a proteger seus dados, coloque quaisquer arquivos personalizados de dados de mapa de site que têm um extensão de nome de arquivo diferente de .sitemap na pasta App_Data e aplique o acesso apropriado a listas de controle (ACLs).Por exemplo, no Windows 2000 ou Windows XP, conceda ao processo ASP.NET o acesso somente leitura da conta .No Windows 2003, conceda ao Serviço de Rede acesso somente leitura.Para obter mais informações, consulte ASP.NET Required Access Control Lists (ACLs).

Navegação do site do ASP.NET somente carregará um arquivo de mapa de sites se o arquivo existir na estrutura de diretório do aplicativo.Isso ajuda a proteger aplicativos em um ambiente hospedado de ter seus dados de mapa de sites carregados por outro aplicativo.

Navegação do site do ASP.NET não permite acesso aos arquivos fora da estrutura de diretório do aplicativo.Se um mapa do site contém um nó que faz referência a outro arquivo de mapa de sites, e o local do arquivo está fora do aplicativo, ocorre uma exceção.A exceção contém o caminho especificado na caixa SiteMapNode, listando-como fora do escopo do aplicativo, mas a exceção não indica se o caminho é válido.Isso ajuda a proteger contra a alguém usando navegação do site ASP.NET para descobrir caminhos de arquivo válidos em um servidor.

Para obter informações sobre como você pode ajudar a proteger seus dados de mapa de site se você implementar um provedor de mapa de site personalizado que usa um banco de dados, consulte Proteção de acesso a dados.

Processo de Carregamento do Mapa do Site

O provedor de mapa de sites padrão do ASP.NET carrega dados de mapa de sites como um documento XML e armazena como dados estáticos quando o aplicativo inicia.Um arquivo de mapa de sites excessivamente grande pode usar muita memória e potência da CPU em tempo de carregamento.Em um ambiente hospedado, restrinja o tamanho de mapas de site que os clientes têm permissão para criar para seus sites.Isso ajuda a proteger contra ataques de negação de serviço.

Os recursos de navegação do site ASP.NET dependem das notificações de arquivo para manter dados de navegação atualizados.Quando um arquivo de mapa de site for alterado, o ASP.NET recarrega os dados de mapa de sites.Isso pode causar um problema se a estrutura de navegação do site é composta de mapas de site filho que têm acesso de gravação concedido para os usuários que podem não entender que cada alteração feita causará um recarregamento.Certifique-se de definir acesso restritivo em todos os arquivos de mapa de sites.Defina os grupos de usuário que tem permissão para atualizar os arquivos e em quais locais e, em seguida, defina as permissões em arquivos de mapa de sites para grupos individuais de usuários.

Navegação do site do ASP.NET permite que nós de mapa de sites individuais possam ser protegidos por uma função.Se você deseja ocultar parte da estrutura de navegação do site de determinados usuários, você pode habilitar a remoção de segurança ASP.NET.Uma vez ativado, o ASP.NET verifica a autorização URL e, opcionalmente, verifica arquivos de permissões de acesso para o arquivo que está listado em um nó de mapa de sites.O ASP.NET exibe o link para esse arquivo somente se o usuário tiver acesso.Se você deseja permitir que todos os usuários exibam um link para um arquivo restrito, defina o atributo roles em nós de mapa de site correspondentes a um asterisco (*), ou caractere curinga, que permitirá a todos os clientes exibir o link.Para obter mais informações, consulte Cortes de segurança em mapas de site no ASP.NET.

Incluindo URLs Externas em um Mapa de Sites

Em um mapa de site, você pode consultar URLs que estão fora do seu aplicativo da Web.No entanto, o acesso a um URL fora do aplicativo não pode ser testado pelo ASP.NET.Por exemplo, se você criar um nó do MAP de site que corresponde a https://www.Microsoft.com e você ativar o filtragem de segurança, o hiperlink não estará visível para clientes porque ASP.NET não é possível testar as permissões de acesso para um URL externo.Se você habilitar remoção de segurança e você tiver nós de mapa de sites que correspondem às URLs externas, defina o atributo roles nesses nós como um asterisco (*), que permitirá todos os clientes exibam o link mesmo que o ASP.NET não possa autorizar o acesso ao vínculo externo.

A API de Navegação do Site

As classes de navegação do site estão publicamente disponíveis para qualquer código que esteja em execução no computador.Classes de navegação do site executadas em confiança mínima.No entanto, confiança baixa é necessária carregar os dados de mapa de sites porque o ASP.NET precisa usar operações de E/S de arquivo ao abrir um arquivo de mapa de sites usando o provedor de mapa de sites padrão, XmlSiteMapProvider.Opcionalmente, você pode desenvolver um provedor personalizado de mapa de site que não possui essa restrição.

Para obter mais informações, consulte Níveis de confiança ASP.NET e arquivos de diretiva e Implementando provedores site-Map em ASP.NET.

Protegendo Implementações Personalizadas do Provedor de Mapa de Site

Quando estiver implementando um provedor personalizado de mapa de sites, certifique-se de que o provedor foi revisado para as práticas de segurança recomendadas.Isso é especialmente importante em um cenário de hospedagem onde um provedor personalizado de mapa de site, se não implementado corretamente, pode vazar informações ou conter definições de configuração que não são seguras.Siga as práticas recomendadas para ajudar a evitar ataques, como ataques de inclusão SQL.Por exemplo, você deve sempre verificar o parâmetro de entrada.

Para obter informações sobre como proteger um banco de dados, consulte Proteção de acesso a dados.Além disso, consulte Segurança de aplicativos ASP.NET em ambientes hospedados.

Mensagens de Erro e Eventos

As seções a seguir abordam como você pode atenuar possíveis riscos de segurança que são expostos por mensagens de erro inesperado e eventos.

Mensagens de exceção

Exceções geradas por recursos de navegação do site do ASP.NET não expõe informações privilegiadas.Revise e teste classes personalizadas em seu aplicativo Web para entradas e solicitações inválidas para ajudar a garantir que informações privilegiadas não sejam expostas quando ocorrerem exceções.

Mensagens de erro

Para ajudar a evitar expor informações sigilosas a fontes indesejáveis, ative erros personalizados para seu aplicativo, ou exiba 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 seu computador estiver executando o Windows Server 2003, você pode ajudar a melhorar a segurança do seu aplicativo, protegendo o log de eventos.Além disso, defina parâmetros sobre o tamanho, retenção, e assim por diante no log de eventos para ajudar a evitar uma ataque indireto de negação de serviço contra o log.Por padrão, somente os membros do grupo de administradores de segurança podem exibr logs de eventos.Para obter mais informações sobre como configurar logs de eventos, procure "Visualizar Eventos" na Ajuda e Suporte do Windows.

Antivírus

Ferramentas como antivírus não devem ser configuradas para modificar os arquivos de mapa de sites.Isso causa um recarregamento desnecessário de dados de navegação porque os recursos de navegação do site ASP.NET dependem do arquivo de notificações para manter seus dados de navegação atualizados.

Consulte também

Conceitos

Protegendo controles padrão

Protegendo funções

Protegendo Estado da Sessão

Proteção de acesso a dados

Protegendo a Associação

Visão Geral sobre Ameças de Segurança em Aplicativos da Web

Práticas de segurança básica para aplicativos da Web

Outros recursos

Segurança de aplicativos da Web ASP.NET

Segurança de aplicativos ASP.NET em ambientes hospedados