2010-12-15 72 views
5

Je souhaite exécuter un assembly .NET tiers sur mon API. Je veux le laisser appeler ses propres méthodes et objets comme il le souhaite, mais lui refuser l'accès à tout ce que mon API ne lui donne pas explicitement. En particulier, si mon API passe un objet au code tiers comme IMyObject je ne veux pas qu'ils utilisent la réflexion ou toute méthode pour élever cet objet, par exemple MyObject qui implémente l'interface.Est-il possible de désactiver la réflexion à partir d'un assemblage .NET?

Existe-t-il un moyen de refuser la possibilité d'utiliser la réflexion dans cet assembly tiers? J'ai le contrôle total de tout, donc je n'ai pas besoin d'empêcher les gens de décompiler mon assembly, juste en abusant à l'exécution.

Répondre

4

Ce que vous cherchez est de faire un assemblage dans un bac à sable. Cela peut être réalisé en utilisant CAS (Code Access Security) dans .Net.

Voici comment cela fonctionne. Vous créez un AppDomain, lui affecter des autorisations limitées. Par exemple, vous autorisez l'affichage d'une interface utilisateur, mais vous ne pouvez pas utiliser le système de fichiers ou la réflexion. Ensuite, vous chargez un assemblage à l'intérieur et laissez-le fonctionner.

.Net 4.0 introduit un tout nouveau modèle de sécurité. Mais je n'en sais pas beaucoup à ce sujet.

Voici quelque chose pour vous aider à démarrer:

Discover Techniques for Safely Hosting Untrusted Add-Ins with the .NET Framework 2.0

0

Si l'appelant s'exécute sur 'Confiance totale', rien ne peut être fait. Il aura toujours un accès complet de l'assemblée.

Le mieux est de masquer l'assemblage. Cela rendra l'assemblage un peu plus difficile à réorganiser.

+0

Désolé, vous me avez mal compris. Je suis l'appelant, et j'appelle l'assemblée de quelqu'un d'autre. – Clueless