Я должен создать среду для выполнения потенциально недоверяемого кода. Программа позволила соединяться с предварительно сконфигурированным address:port, и ничто иное (даже читает системное время). Я скомпилировал белый список класса. Я искал подобные вопросы, но нашел только шаблон, что на основе SecurityManager, какой AFAIK удерживается от использования. Кто-либо может дать мне простую выборку, как выполнить код в песочнице на основе политики безопасности и AccessController?
Насколько мне известно, проверки безопасности по-прежнему выполняет SecurityManager. Но в настоящее время, похоже, он делегируется AccessController.
Сначала вам нужно включить диспетчер безопасности:
-Djava.security.manager
Если вы опустите этот аргумент, песочницы вообще не будет.
Во-вторых, вам нужно указать, где найти файл политики:
-Djava.security.policy =
Это добавит ваши разрешения к тем, которые уже определены в вашем домашнем java-файле. Исходные правила песочницы в ... / jre / lib / security / java.policy. Однако, если вы хотите, чтобы ваша политика была единственной, вам нужно использовать двойной знак «=». Таким образом, вы полностью контролируете то, что разрешено.
Например:
-Djava.security.policy ==
Я бы посоветовал вам использовать "policytool", поставляемый с Java. Это довольно просто, но помогает быстро написать файл политики с правильным синтаксисом.
Надеюсь, это поможет ...