Ho bisogno di creare un ambiente per eseguire codice potenzialmente non affidabile. Programma consentito di connettersi a indirizzo preconfigurato: porta e nient'altro (anche leggere l'ora del sistema). Ho compilato la lista bianca della classe. Avevo cercato domande simili, ma ho trovato solo modelli basati su SecurityManager che AFAIK è deprecato. Qualcuno può darmi un semplice esempio su come eseguire il codice nella sandbox in base alle politiche di sicurezza e AccessController?Creare sandbox java in base alle politiche di sicurezza
risposta
Per quanto ne so, è ancora SecurityManager che esegue i controlli di sicurezza. Ma sembra delegare ad AccessController al giorno d'oggi.
In primo luogo è necessario accendere il responsabile della sicurezza:
-Djava.security.manager
Se si omette questo argomento non ci sarà alcun sandbox di sorta.
In secondo luogo è necessario dire dove trovare il file dei criteri:
-Djava.security.policy =
Questo aggiungerà le autorizzazioni a quelli già definiti in casa java. Le regole originali sandbox in .../jre/lib/security/java.policy. Tuttavia, se desideri che la tua politica sia l'unica, dovrai utilizzare un doppio "=". In questo modo controlli completamente ciò che è permesso.
Ad esempio:
-Djava.security.policy ==
vi consiglio di utilizzare il "policytool" fornito con il Java. È abbastanza semplice ma ti aiuta a scrivere rapidamente un file di politica con la sintassi corretta.
Spero che questo aiuti ...