Как создать белый список классов для пользовательского кода на Java? - PullRequest
1 голос
/ 08 февраля 2011

Я создаю приложение, которое запускает загруженный код Java, и я хотел бы иметь возможность точно указать, к каким встроенным классам Java может обращаться код.Я предполагаю, что это включает использование ClassLoader и SecurityManager, но то, что я нашел в Google, не помогло.

1 Ответ

0 голосов
/ 08 февраля 2011

Я думаю, что в вашем случае вы должны создать свой собственный загрузчик классов или использовать UrlClassLoader, настроенный для загрузки классов с указанных URL-адресов.Обратите внимание, что файл в файловой системе можно интерпретировать как URL, так что не беспокойтесь.

Если, например, у вас есть 2 jar-файла: foo.jar и bar.jar.foo.jar разрешен, bar.jar ограничен для части вашего приложения.Просто добавьте к пути загрузчика классов только первый jar.Второй будет невидимым.

Если вы хотите вызвать исключение SecurityException при доступе к запрещенным классам, вам необходимо реализовать собственный загрузчик классов.Это может быть смесь из двух загрузчиков классов URL: один с foo.jar, другой с bar.jar в classpath.Загрузчик второго класса должен переопределять метод loadClass и выдавать исключение безопасности каждый раз, когда класс успешно загружается.Хотя я не вижу серьезных преимуществ этого решения.

...