Partilhar via


Demandas de link

Uma demanda de link faz com que uma verificação de segurança durante a compilação just-in-time e verifica somente o assembly de chamada imediato do seu código.A vinculação ocorre quando seu código é limite a uma referência de tipo, inclusive as referências de ponteiro de função e chamadas de método.Se o assembly de chamada não tiver permissões suficientes para vincular ao seu código, o link não é permitido e uma exceção em tempo de execução é lançada quando o código é carregado e executado.As demandas de link podem ser substituídas nas classes que herdam de seu código.

Observe que um exame da pilha total não é executado com esse tipo de demanda e que seu código seja ainda suscetível a ataques chamariz.Por exemplo, se um método no assembly A é protegida por uma demanda de link, um chamador direto no assembly que B é avaliado com base nas permissões do Assembly B.No entanto, a demanda de link não avaliará um método no assembly C se ele indiretamente chama o método no assembly um usando o método no assembly B.A demanda de link Especifica que apenas as permissões direcionam os chamadores no assembly chamado imediato devem ter para vincular ao seu código.Ele não especifica as permissões de todos os chamadores devem ter para executar seu código.

The Assert, Deny, e PermitOnly modificadores de pilha walk não afetam a avaliação das demandas de link. Pois as demandas de link não executam um pilha walk, os modificadores de pilha walk não têm efeito nas demandas de link.

Se um método protegido por uma demanda de link for acessado por meio de reflexão, que uma demanda de link verifica o chamador imediato do código acessado por meio de reflexão.Isso é verdadeiro para método de detecção e invocação de método executadas usando reflexão.Por exemplo, suponha que o código usa reflexão para retornar um MethodInfo objeto que representa um método protegido por uma demanda de link e, em seguida, passa que MethodInfo objeto para algum Outros código que usa o objeto para chamar o método original.Nesse caso a verificação de demanda de link ocorre duas vezes: uma vez para o código que retorna o MethodInfo objeto e uma vez para o código que invoca-lo.

Observação:

Uma demanda de link executada em um construtor de classe estática não protege o construtor porque construtores estático são chamados pelo sistema fora do caminho de execução de código do aplicativo.sistema autônomo resultado, quando uma demanda de link é aplicada a uma classe inteira, ele não é possível proteger o acesso a um construtor estático, embora protege o restante da classe.

O fragmento de código a seguir declarativamente Especifica que qualquer código vinculando o ReadData o método deve ter o CustomPermission permissão. Esta permissão é uma permissão personalizada hipotética e não existe no .NET estrutura.A demanda for feita por passar um SecurityAction.LinkDemand o sinalizarCustomPermissionAttribute.

<CustomPermissionAttribute(SecurityAction.LinkDemand)> _
Public Shared Function ReadData() As String
    ' Access a custom resource.
End Function  
[CustomPermissionAttribute(SecurityAction.LinkDemand)]
public static string ReadData()
{
    // Access a custom resource.
}

Consulte também

Conceitos

Demandas de segurança

Criando suas próprias permissões de acesso ao código

Adicionando suporte à segurança declarativa

Outros recursos

Estendendo metadados usando atributos

Segurança de Acesso de código