Менеджер безопасности Java - Что он проверяет? - PullRequest
11 голосов
/ 04 марта 2011

Эта статья о безопасности Java гласит:

Код в библиотеке Java обращается к Менеджер безопасности всякий раз, когда опасно операция будет предпринята.

Итак, что это значит? Скажем, если я реализовал свой собственный менеджер безопасности и включил его для всей JVM. Теперь, java-среда консультируется с моим менеджером безопасности для каждого и каждого java-вызова (например, System.out.println () и т. Д.) Или она консультируется только для dangerous api-вызовов, таких как System.exit (), операций с файлами и т. Д.?

edit : позвольте мне уточнить мой вопрос,

Я не подвергаю сомнению возможности менеджера по безопасности. Я просто спрашиваю, выполняются ли проверки безопасности только для опасных API или для каждого вызова метода . Какой inturn вызывает значительное снижение производительности в случае приложений с большим количеством кода.

Ответы [ 3 ]

16 голосов
/ 04 марта 2011

Он будет обращаться к SecurityManager, только если код говорит об этом. Это не будет делать для каждой отдельной операции.

Например, в Runtime.exit вы видите, что SecurityManager используется:

public void exit(int status) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
    security.checkExit(status);
}
Shutdown.exit(status);
}

Аналогично, в File вы увидите, что большинство методов обращаются к SecurityManager. Пример:

public boolean canWrite() {
SecurityManager security = System.getSecurityManager();
if (security != null) {
    security.checkWrite(path);
}
return fs.checkAccess(this, FileSystem.ACCESS_WRITE);
}

Если вы пишете метод, который может быть «опасным», вам также следует обратиться к SecurityManager.

2 голосов
/ 04 марта 2011

Используя менеджер безопасности, вы можете контролировать доступ к:

  1. Файловым операциям
  2. Средство отражения
  3. Чтение / запись IO
  4. Тема / потокгрупповые операции
  5. Операции с сокетами (прослушивание, принятие и т. д.)
  6. Возможность создания собственного загрузчика классов.

Для каждой такой вещи есть проверка * ()метод в SecurityManager

Для получения исчерпывающего списка проверьте константы в SecurityConstants

0 голосов
/ 04 марта 2011

Менеджер безопасности использует файл политики, чтобы увидеть, что разрешено, а что нет.«Опасные» операции, определенные в этом файле политики, предоставляются или запрещаются во время выполнения.

Подробнее о политике по умолчанию для Sun / Oracle JVM вы можете найти здесь:

http://download.oracle.com/javase/6/docs/technotes/guides/security/PolicyFiles.html

...