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
.