View Full Version : [JAVA]ClassLoading e Security Manager
Salve a tutti,
ho una domanda forse banale e forse già trattata più approfonditamente altrove: sono convinto che online si trovi un sacco di materiale, ma vorrei uno spunto per cominciare, quindi vi chiedo consiglio.
Posso, con Java, limitare le possibilità di azione di un codice che ho caricato tramite un class loader (e non ho scritto io)? Vorrei, cioè, impedire l'esecuzione di chiamate tipo "System.exit" et similia...
Scusate se sto domandando una cosa troppo banale. :D
Installi un security manager, e non specifichi la runtime permission corrispondente.
La trovi qui, penso sia "exitVM":
http://java.sun.com/j2se/1.4.2/docs/guide/security/permissions.html#RuntimePermission
Puoi lanciare l'applicazione da linea di comando con l'opzione:
-Djava.security.manager
Questo fa partire il programma con delle politiche di sicurezza che a malapena permettono l'apertura di una finestra :D.
Puoi lanciare l'applicazione da linea di comando con l'opzione:
-Djava.security.manager
Questo fa partire il programma con delle politiche di sicurezza che a malapena permettono l'apertura di una finestra :D.
Ok, ma se non chiedo troppo... come faccio a imporre le limitazioni di esecuzione solo alle classi che dico io?
Sì, lo so, sono pigro... :D
Puoi specificare il codebase delle suddette classi nella grant entry
del file di policy, vedi qui:
http://java.sun.com/j2se/1.5.0/docs/guide/security/PolicyFiles.html
esempio:
grant codebase "http://..."
{
...
Puoi specificare il codebase delle suddette classi nella grant entry
del file di policy, vedi qui:
http://java.sun.com/j2se/1.5.0/docs/guide/security/PolicyFiles.html
esempio:
grant codebase "http://..."
{
...
Dunque, potrei fare così: metto in un apposito jar le classi che devo caricare dinamicamente, in una directory precisa, e poi assegno dei permessi "potenti" (AllPermission, in pratica) alle "mie" classi (che includono quella che fa il class loading, of course) e nessuno o molto pochi permessi al piccolo package incluso.
Il problema è che devo porre dei vincoli anche sull'utilizzo delle MIE classi (dal codice caricato dinamicamente si può ancora richiamare, per esempio, un metodo statico nelle mie classi): immagino che dovrò crearmi delle permission speciali ed utilizzarle.
Come avrete capito, è una specie di plugin: vorrei avere la possibilità di vincolare fortemente l'utilizzo che ne farà lo sviluppatore esterno (per questo pensavo di fargli estendere una classe astratta, con tutto 'private' e con metodi 'final' quando non 'abstract').
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.