Utilisation de bibliothèques à partir de code d'un niveau de confiance partiel

RemarqueRemarque

Cette rubrique présente le comportement des assemblys avec nom fort et s'applique uniquement aux assemblys de niveau 1.Les assemblys Code transparent de sécurité, niveau 2 du .NET Framework version 4 ou versions ultérieures ne sont pas concernés par les noms forts.Pour plus d'informations sur les modifications apportées au système de sécurité, consultez Modifications de sécurité dans le .NET Framework 4.

Les applications qui reçoivent un niveau de confiance inférieur à la confiance totale de leur hôte ou de leur sandbox ne sont pas autorisées à appeler des bibliothèques managées partagées sauf si le writer de bibliothèque leur en donne l'autorisation spécifique par l'intermédiaire de l'utilisation de l'attribut AllowPartiallyTrustedCallersAttribute. Par conséquent, les writers d'applications doivent savoir que certaines bibliothèques ne seront pas disponibles à partir d'un contexte de confiance partiel. Par défaut, l'ensemble du code qui s'exécute dans un bac à sable (sandbox) de confiance partielle et qui ne fait pas partie de la liste des assemblys de confiance totale est partiellement fiable. Si votre code n'est pas destiné à être exécuté à partir d'un contexte de niveau de confiance partiel ou à être appelé par du code de niveau de confiance partiel, les informations de cette section ne vous concernent pas. Cependant, si vous écrivez du code qui doit interagir avec du code d'un niveau de confiance partiel ou qui doit fonctionner à partir d'un contexte de confiance partiel, vous devez prendre les facteurs suivants en considération :

  • Les bibliothèques doivent être signées avec un nom fort afin d'être partagées par plusieurs applications. Les noms forts permettent à votre code d'être placé dans le Global Assembly Cache ou ajouté à la liste de confiance totale d'un AppDomain sandboxing. Ils permettent aux consommateurs de vérifier qu'une partie spécifique de votre code mobile provient réellement de vous.

  • Par défaut, les bibliothèques partagées avec nom fort de niveau 1 effectuent un LinkDemand implicite automatiquement pour obtenir une confiance totale, sans la moindre participation du writer de bibliothèque.

  • Si un appelant ne bénéficie pas de la confiance totale et tente d'appeler ce type de bibliothèque, le runtime lève une SecurityException et l'appelant n'est pas autorisé à créer un lien vers la bibliothèque.

  • Afin de désactiver le LinkDemand automatique et d'empêcher la levée de l'exception, vous pouvez placer l'attribut AllowPartiallyTrustedCallersAttribute sur la portée de l'assembly d'une bibliothèque partagée. Cet attribut permet à vos bibliothèques d'être appelées à partir du code managé d'un niveau de confiance partiel.

  • Le code de niveau de confiance partiel auquel est accordé l'accès à une bibliothèque possédant cet attribut fait toujours l'objet de restrictions supplémentaires définies par AppDomain.

  • Il n'existe aucune méthode par programmation permettant à du code d'un niveau de confiance partiel d'appeler une bibliothèque qui ne possède pas l'attribut AllowPartiallyTrustedCallersAttribute.

Les bibliothèques qui sont privées pour une application particulière ne nécessitent pas un nom fort ou l'attribut AllowPartiallyTrustedCallersAttribute et ne peuvent pas être référencées par du code potentiellement nuisible en dehors de l'application. Ce type de code est protégé contre une utilisation malveillante, intentionnelle ou non, par du code mobile d'un niveau de confiance partiel sans intervention supplémentaire du développeur.

Vous devez envisager de permettre une utilisation de manière explicite du code d'un niveau de confiance partiel pour les types de code suivants :

  • Le code dont les failles de sécurité ont été soigneusement testées et qui se conforme aux indications décrites dans Indications de codage sécurisé.

  • Des bibliothèques de code avec nom fort qui sont écrites spécifiquement pour des scénarios d'un niveau de confiance partiel.

  • Tous les composants (qu'ils soient d'un niveau de confiance partiel ou total) signés avec un nom fort qui sera appelé par le code téléchargé à partir d'Internet.

RemarqueRemarque

Certaines classes de la bibliothèque de classes .NET Framework ne disposent pas de l'attribut AllowPartiallyTrustedCallersAttribute et ne peuvent pas être appelées par du code d'un niveau de confiance partiel.Consultez Assemblys .NET Framework marqués avec AllowPartiallyTrustedCallersAttribute pour obtenir une liste des classes pouvant être appelées par du code d'un niveau de confiance partiel.

Voir aussi

Concepts

Sécurité d'accès du code

Historique des modifications

Date

Historique

Motif

Juillet 2010

Mises à jour mineures apportées au contenu.

Résolution des bogues de contenu.