Compartilhar via


Protegendo o acesso do método

Alguns métodos podem não ser adequados para permitir códigos arbitrários não confiável de telefonar.Tais métodos apresentam vários riscos: O método pode fornecer algumas informações restritas; ele pode achar todas as informações passadas a ele; ele não pode fazer verificação de erro em parâmetros; ou com parâmetros incorretos, ele talvez não funcione direito ou fazer algo nocivo.Você deve estar atento esses casos e execute ações para ajudar a proteger o método.

Em alguns casos, talvez seja necessário restringir métodos que não são destinados ao uso público, mas ainda devem ser pública.Por exemplo, você pode ter uma interface que precisa ser chamado em suas próprias DLLs e, portanto, deve ser públicas, mas deseja expor publicamente para impedir que os clientes usá-lo ou para evitar que códigos mal intencionados Explorando o ponto de entrada para seu componente.Outro motivo comum para restringir um método não se destina a uso público (mas que deve ser pública) é evitar a necessidade de documentar e oferecer suporte a que pode ser uma interface muito interna.

Gerenciado código oferece várias maneiras para restringir o acesso do método:

  • Limite o escopo de acessibilidade à classe, assembly ou classes derivadas, se puder ser confiáveis.Esta é a maneira mais simples para limitar o acesso do método.Observe que, em geral, as classes derivadas podem ser menos confiáveis que a classe que elas derivam, embora em alguns casos eles compartilham a identidade da classe pai.Em particular, não inferir relação de confiança do que a palavra-chave protegido, que não é necessariamente usado no contexto de segurança.

  • Limitar o acesso do método para chamadores de uma identidade especificada – essencialmente, qualquer determinado evidência (nome forte, o publicador, zona e assim por diante) que você escolher.

  • Limite o acesso do método chamadores ter quaisquer permissões que você selecionar.

Da mesma forma, a segurança declarativa permite controlar a herança de classes.Você pode usar InheritanceDemand para fazer o seguinte:

  • Requerem classes derivadas para ter uma identidade especificada ou permissão.

  • Requerem classes derivadas que substituem métodos específicos para ter uma identidade especificada ou permissão.

O exemplo a seguir mostra como proteger uma classe pública para acesso limitado, exigindo que os chamadores ser assinado com um determinado nome forte.Este exemplo usa o StrongNameIdentityPermissionAttribute com um Por solicitação para o nome forte.Para informações baseadas em tarefas sobre como assinar um assembly com um nome forte, consulte Criando e usando os assemblies com nome forte.

<StrongNameIdentityPermissionAttribute(SecurityAction.Demand, PublicKey := "…hex…", Name := "App1", Version := "0.0.0.0")>  _
Public Class Class1
End Class
[StrongNameIdentityPermissionAttribute(SecurityAction.Demand, PublicKey="…hex…", Name="App1", Version="0.0.0.0")]
public class Class1
{

} 

Consulte também

Outros recursos

Diretrizes para Codificação Segura