2017-09-10 7 views
0

J'ai une application Java et je pense à la sécurité. Je peux obscurcir le code mais je peux toujours "voler" le code de la mémoire ou modifier le code en cours d'exécution en utilisant par exemple javassist. Je cherche SecurityManager pour protéger mon code avant de modifier et obtenir le code de la mémoire par une autre application Java. Quelqu'un sait comment utiliser SecurityManager pour cet exemple ou connaît mieux la solution?Java SecurityManager - code sécurisé avant modification dans le runtime

+0

Il y a beaucoup de commerciaux et open source « obfuscation » , mais vous devez comprendre que cela affectera les capacités d'optimisation JVM. Cela vaut-il vraiment la peine? – fg78nc

Répondre

4

Un SecurityManager fait le contraire de ce que vous essayez de faire. Il protège la machine de l'utilisateur contre les effets potentiellement dangereux de l'exécution de code non fiable. Vous essayez de protéger le code contre l'utilisateur.

Il n'existe pas de véritable solution qui protégera votre code à 100%. Si le code s'exécute sur la machine de l'utilisateur, il peut être volé, et (avec compétence et effort) inversé. Ceci est vrai pour tous les langages de programmation. Fondamentalement, si l'utilisateur contrôle la plate-forme, il peut accéder aux données dans une mémoire d'applications en cours d'exécution, ce que vous ne pouvez pas faire. Dans le cas de Java, ils peuvent également désactiver tous les gestionnaires de sécurité, attacher des agents, et, en gros, outrepasser les contrôles de sécurité que vous pourriez vouloir imposer. C'est >> leur plate-forme < <.

Le mieux que vous puissiez faire est de rendre le travail trop difficile pour quelqu'un qui n'a pas les compétences et le temps nécessaires en rétro-ingénierie.

Et si le code est que précieux ... ne l'exécuter sur votre >> < < matériel dans votre >> < centre de données <, etc.