Java Security Manager-что он проверяет?

этой статьи о безопасности Java говорит:

код в библиотеке Java консультируется с Менеджер безопасности при опасных операция будет покушение.

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

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

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

3 ответов


он будет консультироваться только с 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.


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

  1. файловые операции
  2. отражение объекта
  3. чтение / запись IO
  4. Thread / Thread group operations
  5. операции сокета (слушайте, принимайте и т. д.)
  6. Power для создания собственного загрузчика классов.

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

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


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

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

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