java.policy

30.06.2006
141
5
BIT
0
Мы используем POI 3.8 для выгрузки данных в Excel (используется XSSF). Библиотеки POI добавлены в Java-агента (а не выложены в jvm/lib/ext на сервер), поэтому для нормальной работы агента необходимо в java.policy добавить различные разрешения.

Прописывать permission java.security.AllPermission в общую секцию grant {} не хочется ни нам, ни заказчику, поскольку это практически отключает SecurityManager'а.

Отсюда вопрос - можно ли указать разрешения для конкретной базы?
И какой должен быть формат у записи, т.к. сколько мы не пробовали прописывать что-то вроде:

grant codeBase "file:.../-" {
}

Разрешения не применялись.
 
а почему не на конкретный список классов, а именно на базу?

Добавлено: ну и ваще чёнить отсюда
подобрать
 
ещё можно получить путь класса (к-л) в базе, а потом вбить его
 
а почему не на конкретный список классов, а именно на базу?

Если добавить все разрешения (java.security.AllPermission) в общую секцию grant, то получим отключенный SecurityManager.
Т.е. из любой базы/агента/архива-jar и т.д. на сервере можно будет спокойно выполнять код со всеми разрешениями.

А мы хотим добавить все разрешения только для агентов из нашей базы.

ещё можно получить путь класса (к-л) в базе, а потом вбить его

А можно поподробней как это будет выглядеть.
 
Java:
public void test() {
    try {
        System.out.println(this.getClass().getProtectionDomain());
//      Class myclass = Class.forName("org.apache.oro.text.regex.Perl5Matcher");
//      System.out.println(org.apache.oro.text.regex.Perl5Matcher.class.getProtectionDomain());
        System.out.println(new File(".").getAbsolutePath());
        System.out.println(new File(getClassPath()).getAbsolutePath());
    }
    catch(Exception e) {
        e.printStackTrace();
    }
}

static String getClassPath() {
    return prop.getProperty("java.class.path", null);
}
пущал в агенте - выдаёт нотусовую диру и lotus.domino.AgentLoader@<некий номер после компиляции>
 
моё предположение основывалось на получении текущего класспаз, но оно не получается (для агента пустой getCodeSource())

для хэПагесов
мобуть и для обычных агентов пропрёт ;) - не пробывал
 
У меня файл здесь лежит: ...\IBM\Notes\java.policy
правильно? /других файлов таких нет/
 
Последнее редактирование:
%USERPROFILE%/.java.policy - это с какой версии Notes такое можно?
 
для клиентов лучше:
В некоторых случаях наверное лучше. У нас это всё глобально политиками приезжает, и не нужно, чтобы это мог пользователь изменять. Он может случайно удалить файл, показавшийся лишним, а потом разбирайся...
 
%USERPROFILE%/.java.policy - это с какой версии Notes такое можно?
в девятой есть, я упоминал это в "ругательстве" про 11-ю, где они похерили java.pol
вот для 9.0.1 в домине:
Код:
$grep  -w \.java.policy /opt/ibm/domino/notes/latest/linux/jvm/lib//security/*
/opt/ibm/domino/notes/latest/linux/jvm/lib//security/java.security:policy.url.3=file:///${user.home}/.java.policy
 
Последнее редактирование:
  • Нравится
Реакции: VladSh
В некоторых случаях наверное лучше. У нас это всё глобально политиками приезжает, и не нужно, чтобы это мог пользователь изменять. Он может случайно удалить файл, показавшийся лишним, а потом разбирайся...
решается проверкой при старте приложения (файл проверить недолго), а с политиками - пойди угадай - какой фортель выкинут с обновлением нотусни
 
Последнее редактирование:
решается проверкой при старте приложения (файл проверить недолго), а с политиками - пойди угадай - какой фортель выкинут с обновлением нотусни
Мне не нравится проверять на старте. Так можно массу чего проверять...
Нотусня просто так не обновляется. Только после того, как мы дадим отмашку, что конкретная инсталяха оттестирована, её обновляют scom'ом, и сразу же, для новых установок винды, закатывают в образ, вместе со всем остальным ПО.
 
Не помогает. "write" тоже пробовал. Похоже ему всё равно, хоть добавляй, хоть нет.

У меня файл здесь лежит: ...\IBM\Notes\java.policy
правильно? /других файлов таких нет/
как было выше - можно в юзеровом, в т.ч. на сервере, если виняцкий сервер - лучше пущать под к-л юзеров, в линухах он и так под юзером (ток. не забыть ему хомяк прописать)
до 11--ой версии (нотусни) используется специальный файл java.pol
писать в java.policy плохо, при инсталяции/обновлении его перезаписывают
 
%USERPROFILE%/.java.policy - это с какой версии Notes такое можно?
c 8.5.3 первые упоминая
Вот в этом посте рассматривали, там ссылки еще на источники
 
до 11--ой версии (нотусни) используется специальный файл java.pol
писать в java.policy плохо, при интсаляции/обновлении его перезаписывают
1. Почитал, вроде достаточно просто создать файл с таким именем. Верно? Или надо ещё ссылку на него где-то прописать?
2. А с 11-й что, перестали поддерживать?
 
1. Почитал, вроде достаточно просто создать файл с таким именем. Верно? Или надо ещё ссылку на него где-то прописать?
2. А с 11-й что, перестали поддерживать?
да, достаточно, в нотусне 11бета похерили этот путь в java.security, заметил при запуске кода, который работал в 10-ой, полез в смотреть и обнаружил разницу java.pol там пропал
 
а .java.policy в USERPROFILE не проверял? а то я не могу пока что.
это работает я писал про телегу ;), там в канале подробности
установл 11бету и первым моментов вонзился в java.security ...
там нетути строк:
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${java.home}/lib/security/java.pol
policy.url.3=file:///${user.home}/.java.policy
а есть
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
а критично это тем - что java.pol теперь не сработает!
 
  • Нравится
Реакции: alexas1
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!