Spec-Zone .ru
спецификации, руководства, описания, API
След: Существенные Классы
Урок: Среда Платформы
Раздел: Системные Утилиты
Менеджер безопасности
Домашняя страница > Существенные Классы > Среда Платформы

Менеджер безопасности

Менеджер безопасности является объектом, который определяет политику безопасности для приложения. Эта политика определяет действия, которые опасны или чувствительны. Любые действия, не позволенные политикой безопасности, вызывают a SecurityException быть брошенным. Приложение может также запросить своего менеджера безопасности, чтобы обнаружить, какие действия позволяются.

Как правило, веб-апплет работает с менеджером безопасности, обеспеченным браузером, или Сеть Java Запускают плагин. Другие виды приложений, обычно запускаемых без менеджера безопасности, если само приложение не определяет тот. Если никакой менеджер безопасности не присутствует, у приложения нет никакой политики безопасности и действий без ограничений.

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

Взаимодействие с Менеджером безопасности

Менеджер безопасности является объектом типа SecurityManager; чтобы получить ссылку на этот объект, вызвать System.getSecurityManager.

SecurityManager appsm = System.getSecurityManager();

Если нет никакого менеджера безопасности, этот метод возвраты null.

Как только у приложения есть ссылка на объект менеджера безопасности, оно может запросить разрешение сделать определенные вещи. Много классов в стандартных библиотеках делают это. Например, System.exit, то, который завершает виртуальную машину Java со статусом выхода, вызывает SecurityManager.checkExit гарантировать, что у текущего потока есть разрешение, чтобы завершить работу приложения.

SecurityManager class определяет много других методов, используемых, чтобы проверить другие виды операций. Например, SecurityManager.checkAccess проверяет доступы потока, и SecurityManager.checkPropertyAccess проверяет доступ к указанному свойству. У каждой работы или группы операций есть свое собственное checkXXX() метод.

Кроме того, набор checkXXX() методы представляют набор операций, которые уже подвергаются защите менеджера безопасности. Как правило, приложение не должно непосредственно вызвать никого checkXXX() методы.

Распознавание Нарушения защиты

Много действий, которые являются подпрограммой без менеджера безопасности, могут бросить a SecurityException когда выполнено с менеджером безопасности. Это - истина, вызывая метод, который не документируется как бросок SecurityException. Например, считайте следующий код используемым, чтобы считать файл:

reader = new FileReader("xanadu.txt");

В отсутствие менеджера безопасности этот оператор выполняется без ошибки, обеспеченной xanadu.txt существует и читаем. Но предположите, что этот оператор вставляется в веб-апплет, который обычно работает под менеджером безопасности, который не позволяет ввод файла. Следующие сообщения об ошибках могли бы закончиться:

appletviewer fileApplet.html
Exception in thread "AWT-EventQueue-1" java.security.AccessControlException: access denied (java.io.FilePermission characteroutput.txt write)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
        at java.security.AccessController.checkPermission(AccessController.java:546)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
        at java.lang.SecurityManager.checkWrite(SecurityManager.java:962)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:169)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
        at java.io.FileWriter.<init>(FileWriter.java:46)
...

Отметьте что определенное исключение, выданное в этом случае, java.security.AccessControlException, подкласс SecurityException.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Системные Свойства
Следующая страница: Разные Методы в Системе