Безопасность со Сценариями Java (JRuby, Jython, Groovy, BeanShell, и т.д.)

#Convert to character
df1$MskdName = as.character(df1$MskdName)
df1$L5 = as.character(df1$L5)

myChains = unique(df1$MskdName)
productsChains = split(df1$MskdName, df1$L5)
df2 = sapply(productsChains, function(x) as.numeric(myChains %in% x))
row.names(df2) = myChains
11
задан John Topley 9 February 2009 в 21:16
поделиться

2 ответа

Отказ от ответственности: Я не эксперт по API безопасности Java, таким образом, может быть лучший способ сделать это.

Я работаю на Находящуюся на воздухе, основанную на Java Open Source Enterprise CMS, и мы реализовали что-то подобное тому, что Вы описываете. Мы хотели позволить писать сценарий, но только выставлять подмножество наших API Java к механизму выполнения сценариев.

Мы выбрали сценарии Rhino Engine for JavaScript. Это позволяет Вам управлять, какие API выставляются JavaScript, который позволяет нам выбирать, какие классы доступны, и которые не являются. Издержки, по словам наших инженеров, находятся на порядке 10%-не слишком плохо.

В дополнение к этому, и это может относиться к Вам также на стороне Java, мы используем Acegi (теперь безопасность Spring) и используем AOP для давания основанного на роли контроля, по которому методам может звонить определенный пользователь. Это работает вполне прилично на авторизацию. Таким образом, в действительности пользователь, получающий доступ к нашему приложению через JavaScript сначала, имеет ограниченный API в наличии для него во-первых, и затем что API может быть ограничен еще больше на основе авторизации. Таким образом, Вы могли использовать методы AOP для дальнейшего ограничения, какие методы можно назвать, таким образом позволив выставлять это в других языках сценариев, таких как Groovy, и т.д. Мы находимся в процессе добавления тех также, имея уверенность, что наши базовые API Java защищают пользователей от несанкционированного доступа.

4
ответ дан 3 December 2019 в 11:04
поделиться

Вы можете использовать пользовательский загрузчик класса, который делает ветеринаров, связывающихся с классами прежде, чем делегировать к его родителю.

Можно создать собственные полномочия, проверить на полномочия в безопасности чувствительные API и затем использовать AccessController.doPrivileged восстановить соответствующие полномочия при вызове базового API.

Необходимо удостовериться, что сам механизм выполнения сценариев безопасен. Версия Носорога в JDK солнца должна быть хорошо, но никакие гарантии. Очевидно, необходимо удостовериться, что все доступное сценарию безопасно.

3
ответ дан 3 December 2019 в 11:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: