Quelle est la meilleure façon de protéger les données sensibles dans le code?

J'étais en examinant les moyens de protéger mon code de la décompilation.

Il y a plusieurs bonnes discussions ici de décrire l'obfuscation de code et d'emballage que les moyens de protéger le code. Cependant, aucun d'entre eux est idéal, l'obfuscation ne fonctionne pas avec la réflexion lorsque la méthode de chaîne/les noms des propriétés sont utilisées. Beaucoup de gens ne recommandons pas d'utiliser l'obfuscation à tous.

Donc je suis actuellement a décidé de ne pas aller avec ceux-ci. Cependant, j'ai des parties de code où j'ai besoin d'une sorte de cryptage, par exemple, une base de données de la chaîne de connexion avec une adresse IP, login et mot de passe est stocké à l'intérieur du code aussi simple const string, même que le compte de messagerie de données.

Dans ASP.NET il y a une option pour déplacer les données sensibles à une .config fichier et de le chiffrer, mais qui nécessite la clé du serveur, c'est à dire lié à un seul ordinateur. Je n'ai pas lu beaucoup à ce sujet, mais je suppose que quelque chose de similaire est disponible pour les applications de bureau. Mais j'ai besoin de ce travail sur tout ordinateur où l'application est installée.

Et voici la question: il y a des moyens de codage/la protection de ces données de sorte qu'il ne peut pas être lu en parallèle avec le code decompile?

  • Le problème avec ce que vous décrivez, c'est que même si vous chiffrer ce que vous distribuez, vous devez distribuer la clé de déchiffrement avec elle pour que le code puisse le déchiffrer. Pouvez-vous ne pas externaliser les informations d'identification et de chaîne de connexion, puis demandez à vos utilisateurs de s'inscrire individuellement (chacun de faire ses propres informations d'identification)?
  • Question demande pour de meilleures pratiques de mise en œuvre d'une mauvaise pratique (pensez à séparer les données de la logique à la place).
InformationsquelleAutor net_prog | 2011-10-21