2014-12-30 6 views
6

Tworzę aplikację, która pozwala użytkownikom na uruchamianie przesłanych plików Java. Próbuję ograniczyć możliwości programu Security Manager. Czy pusty plik polityki byłby najbardziej restrykcyjny, nie pozwalając mu zrobić tak dużo jak to możliwe? Czy to ograniczyłoby je do robienia czegokolwiek podstawowego, czego nie powinienem ograniczać?Czy pusty plik zasad zabezpieczeń Java byłby najbardziej restrykcyjny?

+0

co próbujesz ograniczyć? –

+0

Wszystko, co może być szkodliwe. Wydaje się, że Menedżer zabezpieczeń działa, zezwalając na uprawnienia, więc nie jestem pewien, co jest ograniczone, jeśli w ogóle nie zezwalasz na jakiekolwiek uprawnienia. – Greg

+0

Zdefiniuj "pusty menedżer bezpieczeństwa". – EJP

Odpowiedz

5

Tak, polityka bezpieczeństwa, które daje żadnych uprawnień jest najbardziej restrykcyjna polityka można określić ze standardowym Java Menedżer Bezpieczeństwa i uniemożliwiałyby kod dowolny uruchomiony w tym JVM od robienia czegokolwiek, co wymaga zgody zabezpieczeń. Główne interfejsy API Java zasadniczo sprawdzają różne uprawnienia zabezpieczeń, zanim pozwolą, aby kod działający pod kontrolą Security Managera robił wszystko, co może być szkodliwe, więc teoretycznie bezpiecznie jest uruchomić niezaufany kod, w którym nie udzielono żadnych uprawnień.

Istnieje kilka wyjątków: na przykład kod załadowany z systemowej ścieżki klasy może wywoływać System.exit(), który zatrzyma aplikację, a kod uruchomiony bez uprawnień może nadal tworzyć dowolną liczbę nowych wątków, które mogą zablokuj system. Jeśli są to obawy, powinieneś rozważyć napisanie niestandardowego Security Managera.

W twoim przypadku, jeśli używasz kodu aplikacji i kodu dostarczonego przez użytkownika w tej samej maszynie JVM, musisz dać swojemu kodowi aplikacji uprawnienia do robienia rzeczy, które musi wykonać, nie udzielając jednocześnie zezwoleń na niezaufany kod , więc trzeba byłoby dodać coś takiego do pliku polityki:

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

należy pamiętać, że jeśli jesteś określający plik reguł w wierszu poleceń trzeba stosować podwójnej równych (np - Djava.security.policy ** == ** policy.file), w przeciwnym razie twoja polityka rozszerzy domyślną politykę bezpieczeństwa Java, która przyznaje minimalny zestaw uprawnień do całego kodu.

Powiązane problemy