2010-04-13 6 views
1

Je souhaite charger dynamiquement un ensemble de jars ou de classes (c'est-à-dire des plug-ins chargés lors de l'exécution). Dans le même temps, je voudrais limiter ce que ces plugins sont capables de faire dans la JVM. Pour un cas de test, je voudrais les limiter à peu près tout (en ce moment je ne fais que permettre à une valeur System.getProperty d'être lue). J'utilise actuellement un fichier de politique de sécurité, mais j'ai de la difficulté à spécifier une politique pour un dossier ou un paquet dans mon codeBase, mais pas un autre.Restriction des classes et des jars chargés dynamiquement en fonction d'une stratégie de sécurité

Voici comment ma politique ressemble maintenant:

grant codeBase "file:/home/max/programming/java/plugin/plugins/" { 
    permission java.util.PropertyPermission "java.version", "read"; 
}; 
grant codeBase "file:/home/max/programming/java/plugin/api/" { 
    permission java.security.AllPermission; 
}; 

Où (à des fins de test), tous les fichiers du package plugins et le dossier sont limités, mais les classes dans le dossier api ne sont pas. Est-ce possible? Dois-je créer un chargeur de classe personnalisé? Y a-t-il une meilleure façon de s'y prendre?

Merci.

+1

Qu'est-ce que vous avez dans ces dossiers? Fichiers .class ou fichiers .jar? Pour que Java considère les fichiers .jar, vos bases de code doivent se terminer par/* ou/- (pour référence, voir: http://mindprod.com/jgloss/policyfile.html) –

+0

Si vous ne faites vraiment confiance au code du plugin , alors vous devriez le charger dans un chargeur de classe différent (c'est quelque chose qui a apparemment été oublié, mais connu dans les premiers jours du modèle de sécurité Java2 ...). –

+0

La réponse à cette page m'a été très utile: http://stackoverflow.com/questions/502218/sandbox-against-malicious-code-in-a-java-application – Max

Répondre

Questions connexes