2009-08-31 9 views
4

Nous développons un plug-in .NET (bibliothèque de classes) pour une application existante au sein de notre entreprise. C'est une application de bureau qui a un support préexistant pour les plugins.Sécurité .NET Plug In

1) Y a-t-il un mécanisme pour sécuriser le branchement afin de s'assurer qu'il n'est invoqué que par l'application de bureau existante? 2) Existe-t-il une méthode pour empêcher les utilisateurs malveillants de désassembler la base de code (hormis l'obscurcissement) et/ou d'invoquer des méthodes indépendamment de leur visibilité? Je comprends que nous pourrions utiliser l'authentification/autorisation aux endroits appropriés mais nous nous demandions s'il y avait une alternative.

3) Quel est le mécanisme standard de cryptage des données sensibles dans un fichier de configuration de plug-ins?

Répondre

1
  1. Vous pouvez consulter un type de signature numérique ou un échange de clé publique/privée entre le plug-in et l'application. Cependant, protéger la clé privée serait presque impossible à moins d'utiliser une sorte d'authentification en ligne, où la clé privée ne quitte jamais vos serveurs. Pour une approche moins sécurisée, vous pouvez utiliser la méthode Assembly.GetEntryAssembly() dans votre plugin pour obtenir les détails de l'exécutable .NET qui appelle votre plugin. Ensuite, par exemple, si le nom de l'assembly d'entrée n'est pas ce que vous attendez, arrêtez. En fait, .NET fournit des mécanismes tels que Reflection qui simplifient le démontage. L'obfuscation est la "meilleure" approche dans .NET, bien qu'elle n'arrêtera pas les pirates plus déterminés/qualifiés. Vous pouvez chercher à mettre vos assemblys en code natif, mais cela va à l'encontre du but de l'utilisation de .NET car votre code est lié à une plate-forme spécifique. Le code natif peut également être démonté bien sûr.

  2. Examinez les classes ConfigurationManager et la méthode SectionInformation.ProtectSection() et le fournisseur DataProtectionConfigurationProvider.