2014-12-30 12 views
6

Sto creando un'applicazione che consente agli utenti di eseguire file Java caricati. Sto cercando di limitare ciò che possono fare con un Security Manager. Un file di politica vuota sarebbe il più restrittivo, non permettendo loro di fare il più possibile? Ciò impedirebbe loro di fare qualsiasi cosa di base da cui non dovrei limitarli?Un file di politica di sicurezza Java vuoto sarebbe il più restrittivo?

+0

cosa stai cercando di limitare? –

+0

Tutto ciò che potrebbe essere dannoso. Security Manager sembra funzionare consentendo autorizzazioni, quindi non sono sicuro di cosa sia limitato se non si consente alcuna autorizzazione. – Greg

+0

Definisci 'blank security manager'. – EJP

risposta

5

Sì, una politica di sicurezza che non concede autorizzazioni è la politica più restrittiva che è possibile definire con lo standard Java Security Manager e impedisce a codice in esecuzione in quella JVM di eseguire qualsiasi operazione che richiede un'autorizzazione di sicurezza. Le API di base Java in genere controllano una certa varietà di permessi di sicurezza prima di consentire al codice in esecuzione con un Security Manager di fare qualsiasi cosa che potrebbe essere dannosa, quindi in teoria è sicuro eseguire codice non affidabile dove non sono state concesse autorizzazioni.

Esistono alcune eccezioni: ad esempio il codice caricato dal sistema, classpath è autorizzato a chiamare System.exit(), che interrompe l'applicazione e il codice in esecuzione senza autorizzazioni può comunque creare un numero qualsiasi di nuovi thread, che potrebbe bloccare il sistema. Se si tratta di problemi, è necessario prendere in considerazione la possibilità di scrivere un Security Manager personalizzato.

Nel tuo caso se stai eseguendo il codice dell'applicazione e il codice fornito dall'utente nella stessa JVM, devi dare il permesso del codice applicazione per fare le cose che devi fare mentre non concedi permessi a codice non fidato , in modo che avrebbe bisogno di aggiungere qualcosa di simile a quanto segue al file di criteri:

grant codeBase "file:path/to/trusted/application/jars" { 
    permission java.security.AllPermission; 
}; 

essere consapevoli che se si sta specificando il file dei criteri nella riga di comando è necessario utilizzare un doppio uguale (ad esempio - Djava.security.policy ** == ** policy.file), altrimenti la politica estenderà la politica di sicurezza Java predefinita, che garantisce un set minimo di autorizzazioni a tutto il codice.