Vorrei consentire agli utenti di inviare codice sorgente Java/Scala dal client browser e compilarlo/eseguirlo sul server. Tuttavia, allo stesso tempo, voglio limitare gli utenti a eseguire codice potenzialmente dannoso sul server.Scala/Java Sandbox per codice non attendibile
Ad esempio, vorrei impedire l'accesso al filesystem e l'accesso alla rete in entrata/in uscita per il codice sorgente inviato. Cos'altro dovrei limitare?
Quali librerie Java/Scala devo disabilitare esplicitamente per il client? Per esempio, ecco la mia lista Non consentito API/librerie:
java.lang.System
java.lang.Runtime
java.io.*
java.nio.*
scala.io.*
java.net
Come faccio correttamente sandbox non attendibile il codice Java/Scala?
Potrei sbagliarmi ma, per prima cosa, dovresti implementare una "lista bianca" e le seconde API non consentite non saranno sufficienti. Ma ancora una volta, in questa dimensione non sono sicuro dell'intero scopo. – Lucio
Vorrei usare un * approccio all'ambiente isolato *. Cioè, non limitare il codice oi pacchetti disponibili, ma limitare l'ambiente - cioè no (o limitato/virtualizzato) accesso al file system, no (o accesso alla rete limitato/virtualizzato). Questo non risponde alla domanda in quanto non dice * come * creare un ambiente così limitato, ma credo che sia un approccio sano per un servizio online "codepad/execution". – user2864740
@ user2864740 + proibisce cose come 'System.exit()' –