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, вы можете управлять доступом к:
- файловые операции
- отражение объекта
- чтение / запись IO
- Thread / Thread group operations
- операции сокета (слушайте, принимайте и т. д.)
- Power для создания собственного загрузчика классов.
для каждой такой вещи есть метод check* () в SecurityManager
для исчерпывающего списка проверьте константы в SecurityConstants
менеджер безопасности использует файл политики, чтобы увидеть, что разрешено, а что нет. "Опасные" операции, определенные данным файлом политики, разрешаются или запрещаются во время выполнения.
вы можете найти более подробную информацию о политике по умолчанию для Sun / Oracle JVM здесь:
http://download.oracle.com/javase/6/docs/technotes/guides/security/PolicyFiles.html