Я хочу указать определенные апплеты для работы с java.security.AllPermission
на моем компьютере (для отладки и тестирования безопасности). Однако я не хочу включать все апплеты, которые я запускаю для получения этого разрешения. Так, редактирование мой пользовательский файл политики Java (который я обеспечила правильный файл политики через тестирование), я пытаюсь поставить это значение:Как предоставить апплет сайта привилегии AllPermission?
grant codeBase "http://host_where_applet_lives/-" {
permission java.security.AllPermission;
};
Это значение не удается, когда апплет пытается сделать что-то мощное (создать новая тема, в моем случае). Однако, когда я ставлю следующее значение:
grant {
permission java.security.AllPermission;
};
Апплет способен выполнять мощную операцию. Единственное различие заключается в отсутствии атрибута codeBase
.
Ответ на аналогичный вопрос, заданный здесь [1], как представляется, предлагает (но никогда не показывать или доказывать), что могут потребоваться вызовы AccessController.doPrivileged()
. Для меня это звучит неправильно, поскольку мне не нужен этот вызов, когда я предоставляю разрешения всем апплетам (второй пример, который я показал). Даже если это решение, засорение апплетов, которые я запускаю с помощью вызовов AccessController.doPrivileged()
, непросто или обязательно возможно. В довершение всего, мои тесты показывают, что это просто не работает. Но я рад услышать об этом больше идей.
[1] Can't get AllPermission configured for intranet applet. Can anyone help?
В этом комментарии 'doPrivileged' ссылается на апплет, вызываемый JavaScript через LiveConnect. Будьте предельно осторожны с 'doPrivileged' и с надежным кодом в целом. –
Да, но это указывает на то, что doPrivileged() делает -anything-special при работе под AllPermission, о котором я утверждаю, это не должно. – nahsra