Protegendo arquivos de definição do navegador
Arquivos de definição do navegador (arquivos .browser) contêm informações sobre os recursos de classes de navegadores (como o Internet Explorer) e navegadores específicos (como Internet Explorer 6.0).Em tempo de execução, o ASP.NET usa as informações nos arquivos .browser para determinar qual navegador fez a solicitação, quais recursos o navegador tem e como processar a marcação para esse navegador.Para obter mais informações, consulte Navegador Definition Arquivo Esquema (navegadores elemento).
Para obter informações detalhadas sobre as práticas recomendadas para escrever código seguro e segurança de aplicativos, consulte o livro "Writing Secure Code" de Michael Howard e David LeBlanc e ver a orientação fornecida porPadrões e práticas da Microsoft.
![]() |
---|
Arquivos de definição do navegador são novos no .NET Framework versão 2.0.Em versões anteriores do .NET Framework, o elemento browserCaps era usado para definições do navegador nos arquivos de configuração. |
Segurança dos Arquivos de Definição do Navegador
Todos os recursos do navegador, incluindo as classes do .NET Framework e os arquivos de definição do navegador, exigem confiança parcial no nível do aplicativo e confiança total no nível global.O assembly global da definição do navegador está assinado com uma chave de máquina exclusiva antes do posicionamento na cache global de assembly e não pode ser violado.Os arquivos de definição do navegador no diretório %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers são protegidos por listas de controle de acesso (ACLs) e exigem privilégios administrativos para serem modificados.
Pastas de Arquivos de Definição do Navegador
O diretório global do navegador e a subpasta App_Browsers no nível do aplicativo devem conter somente arquivos com a extensão .browser de nome de arquivo.Somente arquivos .browser são compilados pelo recursos ASP.NET do navegador.Além disso, ASP.NET protege os arquivos nesses diretórios de serem servidos pelo servidor Web e de serem acessado por códigos de outros aplicativos.
ACLs de arquivos de definição do navegador
A tabela a seguir lista as ACLs que são definidas como padrão nos arquivos .browser localizados no diretório %SystemRoot%\Microsoft.NET\Framework\versão\CONFIG\Browsers.Essas ACLs também são definidos no diretório em si, mas eles incluem permissões de modificação para o grupo CREATOR OWNER.O diretório é somente leitura.
Conta do Windows |
Permissões |
---|---|
Administradores |
Controle Total |
Conta do computador do ASP.NET (<servidor>\ASPNET) |
Read and Execute |
CREATOR OWNER |
Controle Total |
IIS_WPG (<servidor>\IIS_WPG) |
Read and Execute |
LOCAL SERVICE |
Read and Execute |
NETWORK SERVICE |
Read and Execute |
Usuários Avançados (<servidor>\Usuários Avançados) |
Modify |
SYSTEM |
Controle Total |
Usuários (<servidor>\Usuários) |
Read and Execute |
A tabela a seguir lista as ACLs que devem ser definidas em arquivos .browser na subpasta App_Browsers no nível do aplicativo.
Conta do Windows |
Permissões |
---|---|
Administradores |
Controle Total |
IIS_WPG (<servidor>\IIS_WPG) |
Read and Execute |
INTERACTIVE |
Read |
Conta de convidado da Internet (<servidor>\IUSR_<servidor>) |
Read |
NETWORK |
Read |
NETWORK SERVICE |
Read |
SYSTEM |
Controle Total |
Usuários (<servidor>\Usuários) |
Read and Execute |
Especial |
Protegendo arquivos de definição do navegador
Não fazer o download ou instalar arquivos de definição do navegador, a menos que você confie sua origem.Por exemplo, examine um novo arquivo de definição do navegador para ver se quaisquer namespaces desconhecidos são referenciados em qualquer um dos seguintes atributos:
O atributo markupTextWriterType do elemento controlAdapters.
O atributo value do elemento capability.
Os atributos controlType e adapterType do elemento adapter.
Para obter informações sobre elementos e atributos válidos, consulte Navegador Definition Arquivo Esquema (navegadores elemento).
Alterar arquivos de definição do navegador
Se você adicionar novos arquivos de definição do navegador para o diretório global ou se você fizer alterações aos arquivos de definição global do navegador, essas alterações não têm efeito até que você recompilar manualmente a coleção de recursos do navegador usando a ferramenta Aspnet_regbrowsers.exe, disponível na pasta %SystemRoot%\Microsoft.NET\Framework\versão ou por meio de recompilação através de programação usando a classe BrowserCapabilitiesCodeGenerator.
No entanto, você não precisará recompilar as alterações nas definições de navegador no nível do aplicativo.As alterações para essas definições são recompiladas e reaplicadas dinamicamente.
Protegendo arquivos de definição do navegador em um ambiente de hospedagem compartilhado
Em um ambiente de hospedagem compartilhado, usuários mal-intencionados podem potencialmente modificar configurações do arquivo de definição do navegador através de modificação direta dos arquivos de definição do navegador, modificação por meio de APIs de configuração e outras ferramentas de administração e configuração.Para atenuar essa ameaça, mantenha ACLs fortes nos arquivos de definição do navegador.O conteúdo dos diretórios de arquivo de definição do navegador é compilado, portanto, eles devem ser protegidos da mesma forma que qualquer outro diretório de código do aplicativo.Se um usuário é impedido de adicionar código ao aplicativo pelo administrador do host, o usuário também deve ser impedido de adicionar arquivos de definição do navegador.
Mantendo uma trava de arquivo em um arquivo de definição do navegador
Somente várias tentativas de salvar um arquivo de definição do navegador ou abrir um identificador de arquivo podem bloquear um arquivo de definição do navegador.Um usuário mal-intencionado pode tentar bloquear os arquivos de definição de navegadores no diretório %SystemRoot%\Microsoft.NET\Framework\versão\CONFIG\Browsers.No entanto, bloquear um arquivo de definição do navegador requer confiança total, que está desativada no ASP.NET por padrão.
Usando a configuração API para ler arquivos arbitrários
As classes da API de configuração de definição do navegador não podem ler os diretórios que não fazem parte do domínio de aplicativo, ou quaisquer arquivos que não têm um extensão de nome de arquivo .browser.
Recursos de Cache de Navegador
Em tempo de execução, informações do arquivo de definição do navegador são mescladas em uma coleção de navegadores conhecidos em um objeto BrowserCapabilitiesFactory.Quando uma solicitação é feita, o ASP.NET identifica o navegador solicitante pelo cabeçalho de solicitação e compila um objeto HttpCapabilitiesBase que corresponde ao navegador solicitante.O objeto é armazenado em cache e pode ser usado novamente para uma outra solicitação feita pelo mesmo navegador.
Um cliente mal-intencionado pode tentar sobrecarregar o servidor Web com solicitações onde cada nova solicitação usa um cabeçalho de solicitação diferente, fazendo com que o ASP.NET gere e armazene em cache os objetos de recursos do navegador para cada solicitação, que por sua vez pode resultar em um ataque de negação de serviço.Para atenuar essa ameaça, configure o atributo userAgentCacheKeyLength do elemento Elemento browserCaps (Esquema de configurações do ASP.NET) no arquivo Machine.config ou em um arquivo Web.config.Este elemento define o comprimento de caracteres para usar como a chave para identificar objetos de capacidades no cache interno.O padrão é 64.Você pode reduzir esse valor para torná-lo o mais provável que um navegador correspondência será encontrado no cache, reduzindo a carga no cache.
Exceções
Para evitar que informações confidenciais sejam 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 protegendo o log de eventos e configurando parâmetros sobre o tamanho, retenção, e assim por diante do log de eventos para impedir uma ataque indireto de negação serviço contra ele.Para obter mais informações sobre como configurar logs de eventos, procure "Visualizar Eventos" na Ajuda e Suporte do Windows.
Consulte também
Tarefas
Como: Detectar tipos de navegador em páginas da Web do ASP.NET
Conceitos
Controles de Servidor Web do ASP.NET e Recursos do Navegador
Protegendo arquivos de definição do navegador
Cenários de configuração ASP.NET
Visão geral sobre filtragem de dispositivo do ASP.NET
Visão Geral Arquitetural do Comportamento de Controle Adaptativo
Visão geral sobre Desenvolvimento de Aplicativos para Dispositivos ASP.NET Móveis
Protegendo configuração ASP.NET
Referência
Navegador Definition Arquivo Esquema (navegadores elemento)