2013-12-03 2 views
0

Приложение My JEE работает под управлением tomee и позволяет пользователю писать свои собственные скрипты и запускаться из веб-gui, но я хотел бы ограничить некоторые операции, такие как System.exit (1), например.Как я могу позволить конечному пользователю запускать сценарии в среде JEE под конкретными ограничениями безопасности?

Обсуждение связанных с этим вопросом можно найти в beanshell2 форуме - проверить это - http://code.google.com/p/beanshell2/issues/detail?id=15

Любой язык сценариев, который работает внутри виртуальной машины Java в порядке, но мне нужен этот уровень контроля. Моя первая попытка заключалась в использовании beanshell, но, как видно из вышеизложенного, кажется, что это не вариант.

Я хотел бы избежать более эзотерических языков, поскольку конечный пользователь является техническим, но я не могу попросить его/ее изучить неизвестный язык программирования, чтобы просто написать сценарий :-) [или, может быть, я могу, если я не найдете полезной опции для этого]

Как я могу это получить? Groovy? Может быть, любой другой язык сценариев на основе JVM?

ответ

0

Groovy имеет много энергии в CompilerConfiguration. Вы можете выбрать полезный импорт и многое другое. Разрешенные материалы могут быть в белом или белом списке с использованием SecureASTCustomizer

+1

Я также посмотрю на [Groovy Sandbox] (http://groovy-sandbox.kohsuke.org/) (так как SecureASTCustomizer может быть [немного негерметичным] (http://kohsuke.org/2012/04/27/groovy-secureastcustomizer-is-harmful/)) –

+0

Groovy Sandbox окончательно выглядит как лучший вариант здесь, и Kohsuke's лицензия по умолчанию - это MIT, которая лучше, чем beanshell (GPL) в моем конкретном случае. –

0

Я использовал Rhino давным-давно. Он позволяет запускать JavaScript в Java-приложении (или на стороне сервера). Возможно, вам придется вручную управлять проблемами безопасности.

Не уверен, что это то, что вы ищете, но это может помочь: https://developer.mozilla.org/en-US/docs/Rhino

+0

хорошая идея. возможно, это то, что я ищу - https://forums.oracle.com/thread/1538661 - спасибо –