5 votes

Est-il possible de désactiver la réflexion à partir d'un assemblage .NET ?

Je voudrais exécuter un assemblage .NET tiers sur mon API. Je veux la laisser appeler ses propres méthodes et objets comme elle le souhaite, mais lui refuser l'accès à tout ce que mon API ne lui donne pas explicitement. En particulier, si mon API transmet un objet au code tiers en tant que IMyObject Je ne veux pas qu'ils utilisent la réflexion ou une autre méthode pour élever cet objet à, disons MyObject qui implémente l'interface.

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

4voto

decyclone Points 18778

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

Voici comment cela fonctionne. Vous créez un AppDomain et lui attribuer des autorisations limitées. Par exemple, vous autorisez l'affichage d'une interface utilisateur mais n'autorisez pas l'utilisation du système de fichiers ou de Reflection. Ensuite, vous y chargez un assemblage et vous le laissez s'exécuter.

.Net 4.0 introduit un tout nouveau modèle de sécurité. Mais je n'y connais pas grand-chose.

Voici quelque chose pour vous aider à démarrer :

Découvrez les techniques pour héberger en toute sécurité des modules complémentaires non fiables avec le .NET Framework 2.0.

0voto

Aseem Gautam Points 7269

Si l'appelant fonctionne en 'Full Trust', il n'y a rien à faire. Il aura toujours un accès complet à l'assemblée.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X