2008-08-21 12 views
5

Je souhaite tester le comportement d'un certain morceau de code .NET dans des environnements de confiance partielle. Quel est le moyen le plus rapide pour le configurer? Sentez-vous libre de supposer que je (et d'autres lecteurs) sont des noobs totaux CAS.Test du code .NET dans des environnements de confiance partielle

@Nick: Merci pour la réponse. Hélas, l'outil en question est explicitement pour le code non managé. Je n'ai pas dit "géré" dans ma question, et je n'aurais pas dû supposer que les gens le déduiraient de la balise ".NET".

Répondre

3

Ceci est une excellente question, en particulier d'un point de vue TDD et la validation du code sous différents scénarios de confiance.

Je pense que la façon dont j'approche ce serait quelque chose le long des lignes de -

  • Créer un AppDomain dans mon code TDD en utilisant la surcharge AppDomain.CreateDomain() qui vous permet de passer dans un PermissionSet. Le PermissionSet serait construit pour correspondre aux différents scénarios de confiance que vous souhaitez tester.

  • charge l'ensemble contenant la logique à l'essai dans le domaine de l'application

  • Créer des instances de types/méthodes d'appel, etc dans le domaine de l'application, les exceptions de sécurité piège

Quelque chose un peu comme ça. Je n'ai pas encore eu le temps de tester une preuve de concept.

1

Utilisez le Microsoft Application Verifier.

AppVerifier aide à déterminer:

  • Lorsque l'application utilise les API correctement. (Unsafe TerminateThread API, utilisation correcte de fil API de stockage local (TLS), o Utilisation correcte des manipulations d'espace virtuel (. par exemple, VirtualAlloc, MapViewOfFile).
  • Que l'application se cache des violations d'accès à l'aide structurée la gestion des exceptions.
  • Que l'application tente d'utiliser les poignées invalides.
  • que v r il y a des corruptions de mémoire ou des problèmes dans le tas.
  • Si l'application manque de mémoire en cas de ressources insuffisantes.
  • Indique si l'utilisation correcte des sections critiques est en cours.
  • Indique si une application exécutée dans un environnement d'administration fonctionnera correctement dans un environnement avec moins de privilèges.
  • S'il existe des problèmes potentiels lorsque l'application s'exécute en tant qu'utilisateur limité.
  • S'il existe des variables non initialisées dans les prochains appels de fonction dans le contexte d'un thread.
1

Vous devriez consulter l'outil de configuration .NET Framework. Il est dans le kit de développement .NET, et vous pouvez trouver des instructions sur l'exécution ici ... http://msdn.microsoft.com/en-us/library/2bc0cxhc.aspx

Dans la section politique de sécurité d'exécution vous trouverez 3 niveaux politiques: l'entreprise, la machine et l'utilisateur.Si vous explorez la machine ou l'utilisateur, vous trouverez les définitions de Groupes de codes et Permission Sets. Quand vous dites que vous voulez tester du code .NET dans des environnements de confiance partielle, je suppose que vous voudrez tester par rapport à l'un des ensembles d'autorisations standard déjà définis, tels que Internet. Vous devez définir un Groupe de codes correspondant à votre application (ou à des assemblages spécifiques) et affecter votre jeu d'autorisations à celui Code Groupe.

Vous pouvez définir votre propre Permission Définit aussi, mais gardons les choses simples pour l'instant.

Indiquez si vous souhaitez que votre nouveau groupe de codes existe à l'échelle de l'ensemble de l'ordinateur, ou uniquement pour votre compte d'utilisateur, et percez le niveau de stratégie Machine ou Utilisateur en conséquence. Vous verrez un groupe de code appelé _All _ Code_. Création d'un groupe de code enfant à l'intérieur que l'un, par un clic droit et en sélectionnant Nouveau ...

Donnez-lui un nom, par exemple PartialTrustGroup, puis cliquez sur Suivant .

Vous devez spécifier une condition d'appartenance pour ce groupe, et il existe différents types. J'aime créer un dossier spécifique appelé PartialTrust sur mon ordinateur, puis créer une condition d'appartenance d'URL qui correspond. Donc, mon URL ressemble à ceci ... file: // c:/users/martin/documents/partialtrust/*

Le signe * est un caractère générique pour intercepter tout assemblage situé sous ce chemin. Cliquez sur Suivant.

Vous pouvez maintenant choisir un jeu d'autorisations pour votre nouveau groupe de codes. Pour l'instant, choisissez Internet. C'est un ensemble assez restrictif, similaire à un sandbox applet Java. Cliquez sur Suivant et Terminez.

Maintenant, faites un clic droit sur votre nouveau groupe de code et sélectionnez Propriétés. Dans l'onglet Général, assurez-vous que la case à cocher la plus haute est sélectionnée, puis cliquez sur OK.

Maintenant, tous les assemblys .NET chargés à partir d'un emplacement situé sous l'URL que vous avez spécifiée recevront le jeu d'autorisations Internet. Attendez-vous à obtenir des SecurityExceptions si vous n'avez pas écrit votre code pour observer attentivement le jeu d'autorisations réduit.

Désolé, il s'agit d'une description longue. C'est vraiment beaucoup plus simple que ça en a l'air.

3

La fonctionnalité que vous recherchez est intégré dans Visual Studio:

Dans l'onglet sécurité de votre projet, il y a un bouton « Avancé ... » qui vous permettent de configurer si vous voulez déboguer dans confiance totale ou sur un niveau de confiance spécifié.

+0

+1 Cela m'a juste beaucoup aidé merci. –

1

Je viens de poster un article intitulé Partial Trust Testing with xUnit.net sur mon blog. Il détaille le cadre basé sur xUnit.net que nous utilisons sur l'équipe Entity Framework pour exercer le code sous la confiance moyenne.

Voici un exemple de son utilisation.

public class SomeTests : MarshalByRefObject 
{ 
    [PartialTrustFact] 
    public void Partial_trust_test1() 
    { 
     // Runs in medium trust 
    } 
} 

// Or... 

[PartialTrustFixture] 
public class MoreTests : MarshalByRefObject 
{ 
    [Fact] 
    public void Another_partial_trust_test() 
    { 
     // Runs in medium trust 
    } 
} 
Questions connexes