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