Solicitando permissões

Observação importanteImportante

No .NET Framework versão 4, o suporte de tempo de execução foi removido para o RequestMinimum, RequestOptional, e RequestRefuse as solicitações de permissão.Este tópico não se aplica ao código que se baseia o .NET Framework 4 ou posterior.Para obter mais informações sobre esta e outras alterações, consulte Alterações de segurança na.NET Framework 4.

Solicitando permissões é a maneira que você informar o tempo de execução para poder fazer seu código precisa. Para solicitar permissões para um assembly, colocando os atributos (sintaxe declarativa) no escopo do assembly do seu código. Quando o assembly é criado, o compilador da linguagem armazena as permissões solicitadas a manifesto do assembly. No tempo de carregamento, o runtime examina as solicitações de permissão e aplica regras de diretiva de segurança para determinar quais permissões para conceder ao conjunto. Solicitações apenas influenciam o tempo de execução para negar permissões para o seu código e nunca influenciar o tempo de execução para conceder mais permissões ao código que tenha sido concedida. A diretiva de administração local sempre tem controle sobre as permissões máximas que seu código é concedido.

Observação

Executa o código que se destina a residir em um computador a My_Computer_Zone, que, por padrão, tem confiança total.Confiança total faz com que todas as solicitações de permissão para ser aprovado.As demandas por permissões sempre teve êxito, mesmo para as permissões de identidade, onde a condição de identidade não for atendida.Se o seu código destina-se para ser executado somente na My_Computer_Zone, não há nenhum valor em solicitando permissões.Se seu código destina-se para executar em qualquer uma das outras regiões, solicitando permissões é recomendado.

Observação

No.NET Framework 3.5 Service Pack 1 e posteriores, aplicativos em compartilhamentos da intranet é executado em confiança total por padrão.Se seu aplicativo destina-se para executar a partir de um compartilhamento, ele será executado em confiança total, assim como um aplicativo que é residentes em um computador.Para obter mais informações, consulte A execução de aplicativos de Intranet em confiança total.

Embora não tenha seu código solicitar permissões para ser executado em confiança parcial, há razões importantes que seu código sempre deve solicitar permissões:

  • Solicitando permissões aumenta a probabilidade de que seu código será executado corretamente, se tiver permissão para executar. Código que solicite um conjunto mínimo de permissões não será executado, a menos que ele recebe essas permissões. Se você não identificar um conjunto mínimo de permissões, seu código deve lidar todas e quaisquer situações onde não precisar da permissão alguns pode impedir que ele seja executado corretamente.

  • Solicitando permissões ajuda a garantir que seu código seja concedido somente as permissões necessárias. Se seu código não é concedido permissões extras, ele não pode danificar os recursos protegidos por essas permissões extras, mesmo se ele for explorado por código mal-intencionado ou bugs podem ser aproveitados para danificar os recursos. Você deve solicitar somente as permissões que seu código precisa e nada mais.

  • Solicitando permissões permite aos administradores saber as permissões mínimas que seu aplicativo precisa para que eles podem ajustar diretiva de segurança de acordo. Você pode determinar as permissões que seu aplicativo requer a partir da guia de segurança na página de propriedades do projeto para um projeto de Visual Studio. Se um administrador não souber essas informações, seu aplicativo é difícil de administrar.

Solicitando permissões informa as permissões que seu aplicativo precisa funcionar ou especificamente não que que o tempo de execução. Por exemplo, se seu aplicativo grava no disco rígido local sem usar armazenamento isolado, seu aplicativo deve ter FileIOPermission. Se seu código não solicitar FileIOPermission e as configurações de segurança local não permitam que seu aplicativo tiver essa permissão, uma exceção de segurança é gerada quando o aplicativo tenta gravar no disco. Mesmo se o aplicativo pode manipular a exceção, ele não será permitido para gravar no disco. Este comportamento pode ser frustrante para os usuários se seu aplicativo é um programa de edição de texto usado por um longo período de tempo. Por outro lado, se seu aplicativo solicita FileIOPermission e as configurações de segurança local não permitir que seu aplicativo para que FileIOPermission, o aplicativo irá gerar a exceção quando ele é iniciado e o usuário não enfrentará o problema de perda de qualquer trabalho. Além disso, se seu aplicativo solicita FileIOPermission e se for um aplicativo confiável, o administrador pode ajustar a diretiva de segurança para permitir a execução do compartilhamento remoto.

Se seu código não acessar recursos protegidos ou executar operações protegidas, você não precisará solicitar as permissões. Por exemplo, uma solicitação de permissão não pode ser necessária se o código simplesmente calcula um resultado com base em entradas passadas a ele, sem usar quaisquer recursos. Se seu código acessar recursos protegidos, mas não solicitar as permissões necessárias, ainda podem ter permissão para executar, mas ele poderá falhar em algum ponto durante a execução se ele tenta acessar um recurso para o qual não tenha a permissão necessária.

Para solicitar permissões, você deve saber quais recursos e operações protegidas o código usa, e você também deve saber quais permissões protegem esses recursos e operações. Além disso, você precisa controlar todos os recursos acessados por qualquer método de biblioteca de classe é chamado de seus componentes. Para obter uma lista das permissões de acesso de código que estão incluídos com o.NET Framework, consulte o permissões tópico.

A tabela a seguir descreve os tipos de solicitações de permissão.

Solicitação de permissão

Descrição

Permissões mínimas (RequestMinimum)

Permissões seu código deve ter que executar.

Permissões opcionais (RequestOptional)

Permissões seu código pode usar, mas pode ser executado de forma eficaz sem. Esta solicitação implicitamente recusa todas as outras permissões não especificamente solicitadas.

Recusada permissões (RequestRefuse)

As permissões que você deseja garantir nunca serão concedidas ao seu código, mesmo se a diretiva de segurança permite que eles ser concedido.

Executar qualquer uma das solicitações de acima em conjuntos de permissão interna (Solicitando interna conjuntos de permissões).

Os conjuntos de permissão interna, incluindo nada, execução, FullTrust, Internet, LocalIntranet, e SkipVerification.

Executar qualquer uma das solicitações de acima em conjuntos de permissão XML codificado (Requesting XML-Encoded permissões).

Representação de XML (uma seqüência que contém o conjunto de permissões codificado em XML ou o local de um arquivo XML que contém o conjunto de permissões codificado) de uma permissão desejada definido.

Se você especificar as permissões necessárias (usando RequestMinimum), o código será concedido a cada permissão necessária que a diretiva de segurança permite. O código poderá ser executado somente se for concedida todas as permissões que ele requer.

Solicitar permissões opcionais sem também solicitar as permissões necessárias pode, em alguns casos, gravemente restringir as permissões concedidas a um assembly. Por exemplo, suponha que a diretiva de segurança normalmente concede o Assembly às permissões associadas a tudo chamado conjunto de permissões. Se o desenvolvedor do Assembly A solicitações de permissão a como opcionais e não solicitar as permissões necessárias, Assembly A será concedido permissão A (se a diretiva de segurança permitirem) ou nenhuma permissão em todos os.

Consulte também

Tarefas

Como: Solicitar Permissão para um Conjunto de Permissões Nomeadas

Referência

FileIOPermission

RequestMinimum

SecurityAction. RequestOptional

RequestRefuse

Conceitos

Segurança de Acesso de código

Noções Básicas sobre Segurança de Accesso a Código

Manifesto do Assembly

Permissões de segurança

Solicitar permissões codificadas em XML

.NET Framework diretiva de segurança