2010-03-19 30 views
2

Je souhaite déployer une application avec une licence attachée. Cependant, je veux éviter que ma DLL puisse être facilement référencée en studio visuel.Sécurisation contre les liens dynamiques dans .NET

Quelles sont les façons habituelles de le faire? Je pensais ngen-ing l'application pour empêcher cela, cependant, le code dépend de l'architecture. Je ne suis pas en train de cibler d'autres architectures/plates-formes en dehors de Windows, cependant, l'application de l'application après avoir fait une version release semble être une solution de contournement pour moi. Y a-t-il d'autres techniques pour y parvenir?

+1

Je peux me tromper, mais je ne pense pas que ngen vous permette d'abandonner l'assemblage original. C'est une optimisation des performances/temps de chargement, pas un outil d'obfuscation. –

Répondre

3

Vous ne pouvez pas envoyer une image ngen-ed, Ngen.exe doit s'exécuter sur la machine cible. Il y a un service dédié, installé par l'installateur .NET qui en prend soin. Cela n'aide pas à protéger quoi que ce soit, l'assemblage d'origine doit toujours être présent.

.NET est compatible avec les licences, mais ne fonctionne que pour les classes personnalisables. System.ComponentModel.License est la déclaration de la classe de base. LicFileLicenseProvider est une implémentation concrète de celui-ci.

Vous pouvez acheter quelque chose de tiers, les dongles sont imbattables. Quoi qu'il en soit, la seule vraie protection que vous obtiendrez pour votre propriété intellectuelle est dans une cour de justice. Réclamer des droits d'auteur dans un endroit visible, assurez-vous que votre utilisateur passe par une étape de contrat de licence explicite avant d'utiliser votre code.

+0

+1 "la seule véritable protection que vous obtiendrez pour votre IP est dans une cour de justice." –

+0

Merci pour l'info. Bien que je ne suis pas d'accord avec le fait que les dongles sont imbattables, cependant, cela n'a pas d'importance pour ce cas. Je vais essayer d'obtenir plus d'informations sur la classe Licence et voir ce qu'elle peut faire pour moi. De plus, essayez de le combiner avec la sécurité d'accès au code. – Henri

0

Si vous utilisez un programme d'installation, vous pouvez procéder à l'installation. SQL Server fait cela.

Vous pouvez également masquer. Cela n'empêche pas la liaison en soi, mais il est difficile de savoir ce que la DLL fait, réduisant son "utilité" à d'autres processus.

+0

nobugz dit que ngen-ing n'a pas de sens puisque l'assemblage original devrait également être présent. – Henri

+1

@Henri, merci pour la correction! Je m'en souviendrai. –

0

si vous modifiez la portée de vos classes à un ami

2

sécurité d'accès du code (CAS). Vous pouvez appliquer un LinkDemand, tout au long d'une chaîne d'héritage ou de méthodes ou d'assemblages, qui nécessite que toutes les liaisons d'assemblage aient la même clé de nom fort et d'autres preuves que celles dont vous avez besoin.

+0

Bonne idée, je vais essayer de voir ce que je peux faire avec ce – Henri