Я уже использую Java 8 и это Nashorn JavaScript двигателя. И в моем приложении я получаю доступ к файлам сценариев javaScript из Java classess для различных целей. И все же можно получить доступ к Java-классам из кодов javaScript. Но так как JavaScripts в моих приложениях также может быть написан третьей стороной, Я хочу ограничить их (сценарии JS) от доступа к модулям Java. (В частности, запретить некоторые классы Java)Запрещать скрипты от доступа к определенным классам Java с помощью Java диспетчера безопасности
Я не хочу ограничивать доступ к классам Java, просто ищу способ ограничить или запретить некоторые определенные классы Java.
В Nashorn мы можем сделать это с помощью ClassFilters (overiding 'exposeToScripts()' метод), как показано ниже.
class MyCF implements ClassFilter {
@Override
public boolean exposeToScripts(String s) {
if (s.compareTo("myPackage.MyClass") == 0) return false;
return true;
}
}
Но , как мы можем использовать диспетчер безопасности Java, чтобы сделать то же самое, или путь, используя ClassFilter (упомянутую выше) достаточно, чтобы поймать и ограничить все нежелательный доступ класса Java.
Спасибо за разъяснение. Итак, любая идея о том, как это сделать с помощью Security Manager? то есть ограничить доступ к определенным классам Java для скриптов. – prime
См. Свойство package.access в этом документе -> http://docs.oracle.com/javase/7/docs/technotes/guides/security/smPortGuide.html Обратите внимание, что предотвращение доступа к пакетам Java для всех классов. Не только для скриптовых классов! Я упомянул менеджера безопасности для песочницы - не обязательно для предотвращения доступа к доступу к Java из сценариев. Я рекомендую вам запустить с менеджером безопасности и установить ClassFilter для фильтрации доступа к определенным классам из * scripts *. security.access надлежащим образом обычно устанавливается в стандартный файл безопасности в JRE. –
Я думаю, что вы ссылаетесь на файл java.policy в папке/security в java, jre. Я настроил собственный диспетчер безопасности, используя предоставленный класс securityManager, ну да, как вы предположили, мы также можем использовать Nashorn ClassFilter. Это то, что я делаю в настоящее время, мне просто нужно проверить, что эти классы Java ограничены доступом третьих сторон, а не только для сценариев JS. – prime