Chciałbym umożliwić użytkownikom przesyłanie kodu źródłowego Java/Scala z klienta przeglądarki i kompilowanie/uruchamianie go na serwerze. Jednocześnie jednak chciałbym ograniczyć użytkownikom możliwość uruchamiania potencjalnie złośliwego kodu na serwerze.Scala/Java Sandbox dla niezaufanego kodu
Na przykład chciałbym uniemożliwić dostęp do systemu plików oraz dostęp do sieci przychodzącej/wychodzącej dla przesłanego kodu źródłowego. Co jeszcze mogę ograniczyć?
Które biblioteki Java/Scala należy jawnie zabronić klientowi? Na przykład, oto moja lista niedozwolonych API/bibliotek:
java.lang.System
java.lang.Runtime
java.io.*
java.nio.*
scala.io.*
java.net
Jak prawidłowo piaskownica niezaufane kodu Java/Scala?
Może się mylę, ale najpierw należy wdrożyć „białą listę” i drugi, wykluczający API nie będzie wystarczające. Ale znowu, w tym wymiarze nie jestem pewien całego zakresu. – Lucio
Użyłbym * podejścia opartego na izolowanym środowisku *. To znaczy, nie ograniczaj dostępnego kodu lub pakietów, ale ograniczaj środowisko - tj. Nie (lub ograniczaj/zwirtualizowany) dostęp do systemu plików, bez (lub ograniczonego/zwirtualizowanego) dostępu do sieci. To nie odpowiada na pytanie, ponieważ nie mówi * jak * stworzyć tak ograniczone środowisko, ale uważam, że jest to rozsądne podejście do usługi "codepad/wykonanie" online. – user2864740
@ user2864740 + zabronić rzeczy jak 'System.exit()' –