2016-03-05 9 views
0

В соответствии с пониманием его можно манипулировать общим понятием final ключевое слово с использованием отражения.Может ли менеджер безопасности java быть включен по умолчанию на уровне установки?

Также его можно предотвратить с помощью диспетчера безопасности.

Возможно ли включить менеджера безопасности по умолчанию (на уровне установки jdk)?

Ссылки:

Update 1:

Учитывая, что его необходимо включить для того, чтобы работать, его вряд ли его можно.

Ближайший я получил, разместив System.setSecurityManager(new SecurityManager()) в статическом блоке класса, объединив его как банку и поместив его в «jre/lib/ext», только чтобы найти, что он не загружен по умолчанию, и мы по-прежнему необходимо использовать Class.forName.

Таким образом, даже в противном случае единственными вариантами являются либо использование флага -Djava.security.manager, либо добавление программно.

ответ

0

Вы можете установить свойства системы Java по умолчанию с помощью переменной окружения _JAVA_OPTIONS, поэтому вы можете установить _JAVA_OPTIONS="-Djava.security.manager" в своей системе, и это обеспечит запуск всех процессов Java с включенным менеджером безопасности.

Конечно, эта переменная может быть перезаписана, поэтому она может быть недостаточно безопасной в зависимости от вашей среды.

Если вы пытаетесь обеспечить, чтобы окончательный член определенного класса не мог быть переопределен с помощью отражения, другим вариантом было бы поставить статический блок инициализации в этом классе, который проверяет, установлен ли диспетчер безопасности и выбрасывает исключение SecurityException, если это не так.

+0

Угадайте, пожалуйста. То, что я пытаюсь достичь, заключается в том, чтобы не полагаться на программный подход, поскольку он полагается на загружаемый класс, который не обязательно гарантируется. Вот почему я ищу опцию, которая может быть гарантирована и применяется в JVM и, предпочтительно, не обратима (то есть менеджер безопасности не должен быть установлен после установки). Спасибо за ваш ответ. –