Будет ли пустой файл политики безопасности Java наиболее строгим?
Я создаю приложение, которое позволяет пользователям выполнять загруженные файлы Java. Я пытаюсь ограничить то, что они могут сделать с помощью диспетчера безопасности. Будет ли пустой файл политики самым ограничительным, не позволяя им делать как можно больше? Будет ли это ограничивать их в выполнении чего-то простого, от чего я не должен их ограничивать?
1 ответ
Да, политика безопасности, которая не предоставляет никаких разрешений, является наиболее строгой политикой, которую вы можете определить с помощью стандартного диспетчера безопасности Java, и будет препятствовать тому, чтобы любой код, работающий в этой JVM, выполнял все, что требует разрешения безопасности. API ядра Java обычно проверяют различные разрешения безопасности, прежде чем разрешить коду, выполняющемуся под управлением Security Manager, делать что-либо, что может быть вредным, поэтому теоретически безопасно запускать ненадежный код, если не было предоставлено никаких разрешений.
Есть некоторые исключения: например, код, загруженный из системного пути к классам, может вызывать System.exit (), что остановит ваше приложение, а код, выполняющийся без разрешений, может по-прежнему создавать любое количество новых потоков, которые могут заблокировать систему., Если это проблемы, вам нужно подумать о написании собственного менеджера безопасности.
В вашем случае, если вы выполняете код своего приложения и предоставленный пользователем код в одной и той же JVM, вам необходимо дать разрешение коду вашего приложения выполнять все необходимые действия, не предоставляя при этом никаких разрешений для ненадежного кода, поэтому необходимо добавить что-то вроде следующего в ваш файл политики:
grant codeBase "file:path/to/trusted/application/jars" {
permission java.security.AllPermission;
};
Помните, что если вы указываете файл политики в командной строке, вам нужно использовать двойное равенство (например, -Djava.security.policy**==**policy.file), в противном случае ваша политика расширит значение по умолчанию. Политика безопасности Java, которая предоставляет минимальный набор разрешений для всего кода.