2010-08-19 3 views
1

Je crée une application avec plusieurs DLL et j'ai pensé que je pouvais simplement appeler Assembly.GetPublicKey() à l'exécution et voir si les DLL étaient signées par moi. Cependant, je vois maintenant qu'il existe une méthode SetPublicKey sur l'assemblage. Cela ne rend-il pas facile pour quiconque d'usurper mes DLL? Ou est-ce que je vérifie la signature des DLL dans le mauvais sens?.net Question de sécurité d'assemblage

Mise à jour: J'ai une architecture de plugin et j'essaye juste d'empêcher quelqu'un de détourner mon application en écrivant leur propre DLL.

+0

double possible de [Vérification d'un assemblage pour un nom fort] (http://stackoverflow.com/questions/308756/checking-an-assembly-for-a-strong-name) –

Répondre

0

Pas probablement la route suggérée mais ce que je fais pour mes DLL est de créer une classe et de lui passer une clé privée pour l'activer.

var secureClass = new MyDLL.SecureClass ("Mot de passe")

puis sur une méthode à l'intérieur SecureClass-je appeler ce qui suit avant tout le code:

si IsActivated() = false alors Alert_Not_Active ( Retour Faux Fin Si

Peut-être qu'il existe de meilleures options, mais cela fonctionne parfaitement pour moi. Assurez-vous d'utiliser une application telle que {Smart Assembly} pour protéger votre code de Reflection si le codage est extrêmement important

1

Votre application complète est-elle dans .NET? Lorsque vous compilez, toute assembly qui fait référence à un autre doit exiger que l'assembly soit correctement signé, et .NET devrait être capable de gérer cela, et cela devrait être transparent pour vous. Vous ne devriez pas avoir à vérifier les assemblages vous-même.

http://msdn.microsoft.com/en-us/library/ab4eace3.aspx