Мы пытаемся предоставить элементы сценария в "предприимчивом" продукте. Мы хотели бы использовать groovy, но у нас возникают трудности с обеспечением очень простых вещей.
Например, мы хотели бы, чтобы клиент просто не переходил
Class.forName("my.company.internal.SecruityTools").runAsAwesome(...)
Мы установили менеджера безопасности с политикой, которая разрешает только accesDeclaredMembers
и перезаписала метод checkPackageAccess
и разрешает только белые пакеты. К сожалению, цепочка класса classLoader по умолчанию просто обходит это и загружает класс каким-либо образом.
Казалось бы, это довольно распространенная/обсуждаемая проблема, но я не могу на всю жизнь найти библиотеку или даже хорошее сообщение в блоге о том, как блокировать ненадежные скрипты в контексте гораздо большего приложения.
Кто-нибудь сделал это успешно? Я пропустил некоторые довольно очевидные должности/концепции? Есть ли для этого сплошная библиотека? Может быть, Groovy.tinFoilHatMode(true)
?