Article de reference

Sécurité d'accès au code

Dans le framework Microsoft .NET , la sécurité d'accès au code (CAS) est la solution de Microsoft pour empêcher l'exécution de code non fiable d'actions privilégiées. Lorsque le...

Dans le framework Microsoft .NET , la sécurité d'accès au code (CAS) est la solution de Microsoft pour empêcher l'exécution de code non fiable d'actions privilégiées. Lorsque le CLR charge un assembly , il obtient des informations sur cet assembly et les utilise pour identifier le groupe de code auquel il appartient. Un groupe de code contient un ensemble d'autorisations (une ou plusieurs autorisations ). Tout code effectuant une action privilégiée génère une demande d'accès au code , ce qui amène le CLR à parcourir la pile d'appels et à examiner l'ensemble d'autorisations accordé à l'assembly de chaque méthode présente dans la pile. Les groupes de code et les ensembles d'autorisations sont définis par l'administrateur de la machine, qui configure la stratégie de sécurité . Microsoft considère CAS comme obsolète et en déconseille l'utilisation. Il n'est pas non plus disponible dans .NET Core et .NET.

Authenticode ).
  • URL : l'URL complète depuis laquelle l'assemblage a été lancé.
  • Site : le nom d’hôte de l’URL/du domaine distant/du VPN.
  • Zone : la zone de sécurité où se trouve l'assemblée
  • Hachage : un hachage cryptographique de l'assemblage, qui identifie une version spécifique.
  • Nom fort : combinaison du nom de l’assembly, de sa version et de la clé publique de la clé de signature utilisée pour signer l’assembly. La clé de signature n’est pas un certificat X.509 , mais une paire de clés personnalisée générée par l’outil de nommage fort SN.EXE ou par Visual Studio .
  • Un développeur peut utiliser des preuves personnalisées (appelées preuves d'assemblage), mais cela nécessite l'écriture d'un assemblage de sécurité et, dans la version 1.1 C# , on peut obtenir ces preuves grâce à la clause de code suivante :

    Active Directory .
  • Machine : politique pour la machine actuelle.
  • Utilisateur : politique applicable à l’utilisateur connecté.
  • AppDomain : stratégie du domaine d’application en cours d’exécution.
  • Les trois premières stratégies sont stockées dans des fichiers XML et sont administrées via l'outil de configuration .NET 1.1 (mscorcfg.msc). La dernière stratégie est administrée par le biais du code du domaine d'application actuel.

    La sécurité d'accès au code présentera les preuves d'un assembly à chaque politique et prendra ensuite l'intersection (c'est-à-dire les permissions communes à tous les ensembles de permissions générés) comme permissions accordées à l'assembly.

    Par défaut, les stratégies Entreprise, Utilisateur et Domaine d'application accordent une confiance totale (c'est-à-dire qu'elles autorisent tous les assemblys à disposer de toutes les autorisations), tandis que la stratégie Machine est plus restrictive. L'intersection étant prise en compte, l'ensemble final des autorisations est déterminé par la stratégie Machine.

    Notez que le système de stratégie a été éliminé dans .NET Framework 4.0.

    Groupe de codes

    Les groupes de code associent un élément de preuve à un ensemble d'autorisations spécifique. L'administrateur utilise l'outil de configuration .NET pour spécifier un type d'élément de preuve particulier (par exemple, Site) et une valeur particulière pour cet élément (par exemple, www.mysite.com), puis identifie l'ensemble d'autorisations qui sera accordé au groupe de code.

    Exigences

    Le code effectuant une action privilégiée requiert une ou plusieurs autorisations. Cette demande entraîne l'analyse de la pile d'appels par le CLR, qui vérifie pour chaque méthode que les autorisations requises sont bien présentes dans les autorisations accordées à l'assembly. Si une autorisation n'est pas accordée, une exception de sécurité est levée. Ceci empêche le code téléchargé d'effectuer des actions privilégiées. Par exemple, si un assembly est téléchargé depuis un site non fiable, il ne disposera d'aucune autorisation d'entrée/sortie de fichiers ; par conséquent, toute tentative d'accès à un fichier par cet assembly lèvera une exception empêchant l'appel.

    .FILET
    Infrastructure linguistique commune