Compartilhar via


Níveis de confiança ASP.NET e arquivos de diretiva

Níveis de confiança são associados com arquivos de diretiva usando o elemento de configuração <securityPolicy>, que é válido somente em um arquivo de configuração (Web.config) no nível do site.Você pode adicionar ou remover os níveis de confiança adicionando entradas à seção de configuração que especifiquem o nome do nível de confiança e o arquivo de diretiva a ser usado.Os arquivos de confiança padrão são instalados no diretório Config sob a pasta que contém o arquivo aspnet_isapi.dll.Esse é o mesmo local usado para o arquivo de configuração Machine.config e o arquivo de diretiva de segurança em tempo de execução.

O nível de confiança Full é um caso especial.Porque é exatamente equivalente a ter confiança total na zona da máquina local, o host ASP.NET não aplica qualquer diretiva adicional a esses aplicativos.Portanto, o nível de confiança Full é mapeado para um manipulador interno e ASP.NET não adiciona diretiva adicional para o domínio do aplicativo para aplicativos com confiança total.

O exemplo a seguir mostra a seção securityPolicy de um arquivo de configuração que mapeia níveis de confiança para arquivos de diretiva diferente.

<system.web>
    <securityPolicy>
    <trustLevel name="Full"    policyFile="internal"/>
    <trustLevel name="High"    policyFile="web_hightrust.config"/>
    <trustLevel name="Medium"  policyFile="web_mediumtrust.config"/>
    <trustLevel name="Low"     policyFile="web_lowtrust.config"/>
    <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
    </securityPolicy>
</system.web>

Se você não deseja aplicativos que são capazes de especificar seus próprios níveis de confiabilidade, você pode especificar uma diretiva <location> e definir o atributo allowOverride como false.Você pode fazer isso no um servidor que hospeda vários aplicativos e que precisa limitar o nível de confiabilidade dos aplicativos hospedados.

Modificando arquivos de nível de confiança

Você pode alterar os arquivos de diretiva ou criar novos com conjuntos de permissões personalizadas.Por exemplo, você pode copiar o conteúdo do arquivo Web_hightrust.config e atribuir permissão para fazer conexões OLEDB, primeiro adicionando a classe OleDbPermission à seção SecurityClasses do arquivo de diretiva, conforme mostrado no exemplo de código a seguir

<SecurityClass Name="OleDbPermission" 
    Description="System.Data.OleDb.OleDbPermission, System.Data, Version=2.0.0.0, 
    Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

Em seguida, você pode especificar os parâmetros para o OleDbPermission especificado, incluindo as restrições de sequências de caracteres de conexão com banco de dados OLE.Em seguida, você pode especificar quais conjuntos de permissão incluem a classe de segurança OleDbPermission adicionando um elemento IPermission ao elemento PermissionSet com um nome de ASP.NET no arquivo de confiança-diretiva.O exemplo de código a seguir especifica que a única conexão OLEDB permitida concederá acesso irrestrito para o banco de dados Catalog.mdb do Access.

<PermissionSet
  class="NamedPermissionSet"
  version="1"
  Name="ASP.Net">
  <IPermission
    class="OleDbPermission"
    version="1"
    Unrestricted="true" />
</PermissionSet>

Algumas permissões, tais como a permissão OleDbPermission permitem a você especificar restrições adicionais que restringem o acesso que é concedido ou negado.Por exemplo, a permissão OleDbPermission permite conceder acesso para fazer conexões usando o framework provedor de dados OLEDB .NET, mas com restrições em que as sequências de conexão OLEDB são permitidas.O exemplo de código a seguir especifica que é permitido somente conexões OLEDB para bancos de dados do Access.

<IPermission class="OleDbPermission" version="1">
    <add ConnectionString=
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\access_data\catalog.mdb""
        KeyRestrictions=""data source=;user id=;password=;" 
        KeyRestrictionBehavior="AllowOnly"/>
</IPermission>

Você pode atualizar seu arquivo de diretiva de segurança e colocá-lo no lugar corrente do arquivo Web_hightrust.config, ou você pode criar um novo arquivo de diretiva de segurança e também especificar o arquivo de diretiva para o nível de segurança High, ou criar um novo nível de segurança como mostrado no código a seguir.

    <trustLevel name="HighCustom"
    policyFile="web_highcustom.config"/>

Para preservar as configurações padrões, ASP.NET inclui duas cópias de cada arquivo que contém configurações de nível de segurança.Uma cópia é chamada com a extensão nome de arquivo .config , como mostrado na seção de configuração anterior.O arquivo .config contém as configurações para cada nível de confiança usada pelo sistema.A segunda cópia é denominada com a extensão de nome de arquivo . config.default e contém as configurações padrões para o nível de confiança relacionado.Se as configurações atuais de nível de confiança tiverem sido modificadas e você desejar restaurar as configurações padrões, você pode substituir o conteúdo do arquivo.config com o conteúdo do arquivo config.default.

Para obter uma descrição mais detalhada de gerenciamento de um arquivo de diretiva de confiança, consulte "How To: Usar confiança média no ASP.NET 2.0 "emPadrões e práticas (PAG): Orientações de segurança para aplicativos.

Consulte também

Conceitos

Mecanismos de diretivas do ASP.NET

Outros recursos

Segurança de aplicativos da Web ASP.NET