2008-12-17 6 views
17

Quelqu'un pourrait-il expliquer? Je n'ai rien trouvé sur internet, tout parle de comment s'y prendre d'une manière ou d'une autre, mais rien ne dit exactement ce que c'est.Qu'est-ce qu'un assembly/application/code/etc partiellement approuvé dans .NET?

En outre, qu'est-ce qu'un assembly de confiance totale et comment sont-ils différents les uns des autres?

J'ai un examen de certification MS et c'est le seul sujet que je ne comprends pas.

EDIT: Merci les gars. Maintenant, j'ai une meilleure compréhension de la sécurité dans .NET. J'ai réussi mon examen de certification.

Répondre

11

Un full-trust assembly dispose d'un ensemble illimité d'autorisations code access security, ce qui permet au code d'accéder à tous les types de ressources et d'effectuer des opérations privilégiées, sous réserve uniquement de la sécurité du système d'exploitation. Par exemple, si l'utilisateur Bob ne peut pas accéder au fichier Y, aucun assembly de confiance totale ne peut non plus s'exécuter dans l'espace utilisateur de Bob.

Un partial-trust assembly signifie que le code s'exécute avec une confiance inférieure à la confiance totale. Le .NET Framework a plusieurs trust levels prédéfinis que vous pouvez utiliser directement ou personnaliser pour répondre à vos besoins de sécurité spécifiques. Par exemple, vous pouvez empêcher un assembly d'accéder aux bases de données SQL en refusant SQLClientPermission.

Le niveau de confiance d'un assemblage peut également être diminué par son origine. Par exemple, le code provenant d'un partage réseau (dans les anciennes versions de .NET) est moins fiable que le code provenant de l'ordinateur local et, par conséquent, sa capacité à effectuer des opérations privilégiées est limitée.

15

.NET implémente un modèle de sécurité appelé code access security. Le code non géré s'exécute avec les privilèges et les droits de l'utilisateur qui démarre l'application, même si le code provient de sources malveillantes.

Le code géré doit fournir preuve de son origine; Il existe plusieurs façons de le faire (par exemple, le code est signé avec une certaine clé, le code a été téléchargé à partir d'une certaine URL, le code vit dans un certain répertoire sur le disque, etc.). Sur la base de ces preuves, les assemblées sont regroupées en groupes pour lesquels des politiques sont appliquées. Une stratégie peut octroyer certaines autorisations à un groupe de code, principalement en termes d'accès aux ressources système (recherche DNS, ouverture de connexions réseau, accès à un "stockage isolé", accès au système de fichiers local (tous ou uniquement des répertoires sélectionnés), accès à le registre, l'accès aux partages réseau, etc.). Il y a un outil dans le panneau de contrôle qui vous permet de définir de telles politiques.

Lorsqu'un assembly tente d'effectuer une opération restreinte, une vérification de privilège est effectuée. Si l'accès est accordé, l'opération se poursuit. Si la vérification échoue, une exception est levée. La vérification implique généralement une traversée de pile (c'est-à-dire que tous les appelants doivent être approuvés pour cette opération), mais il existe des exceptions. Dans un cas particulier, il est possible d'affecter "Approbation totale" à un assemblage, en accordant toutes les autorisations. Bien que je n'aie pas entendu le terme «confiance partielle» auparavant, je suppose qu'il se réfère à des assemblées qui ont des droits, mais pas de confiance totale. S'il vous plaît comprenez qu'il s'agit juste d'une vue d'ensemble - il y a beaucoup plus à dire sur la sécurité d'accès au code.

+2

Notez que même un assembly FullTrust est toujours contraint par la sécurité du système d'exploitation. Par exemple, si l'utilisateur Bob ne peut pas accéder au fichier Y, aucun assembly de confiance totale ne fonctionnera dans l'espace utilisateur de Bob. – RoadWarrior

0

Peut-être qu'un peu de contexte vous aidera.

Pensez à quelque chose comme la navigation stackoverflow.Il y a le code du navigateur lui-même qui peut faire n'importe quoi sur votre ordinateur (supprimer des fichiers par exemple) et il y a le code javascript du site. Le code javascript ne peut rien faire sur votre ordinateur, sauf les effets de fondu astucieux et d'autres magie d'affichage.

.net a la capacité de fournir une telle distinction entre l'application locale et celles distantes. Vous pouvez écrire une application qui s'exécutera sur l'ordinateur local et sera capable de faire n'importe quoi sur l'ordinateur local. Et cette application peut avoir une fonctionnalité qui télécharge l'extension dll depuis internet. Ces extensions seront capables de faire des calculs et de manipuler l'affichage. Mais le code à l'intérieur d'eux veut pouvoir supprimer des fichiers. Parce que ce n'est pas digne de confiance.

Les détails sont erronés mais c'est l'idée (pour autant que je le comprends).

Questions connexes