Использование расширенных привилегий
Как и маркированные объекты
Java, маркированные скрипты используют вызовы
Netscape-классов безопасности
Java для запрашивания
расширенных привилегий.
Java-классы расширяются в
Java Capabilities API.
В простейшем случае вы добавляете одну строку кода, запрашивающего разрешение на доступ к определённой цели, представляющей ресурс, доступ к которому вы хотите получить. Например:
netscape.security.PrivilegeManager.enablePrivilege("UniversalSendMail")
Когда скрипт вызывает эту функцию, подпись проверяется и, если подпись верна, даются
расширенные привилегии. Если нужно, диалог выводит информацию об авторе приложения и предоставляет пользователю опцию для разрешения или запрещения
расширенных привилегий.
Привилегии даются только в
области видимости запрашивающей функции и только после того как запрос удовлетворён в этой функции. Эта
область видимости функции включает любые функции, вызываемые запрашивающей функцией. Когда скрипт выходит из запрашивающей функции, привилегии перестают действовать.
Следующий пример демонстрирует это, печатая такой текст:
7: disabled
5: disabled
2: disabled
3: enabled
1: enabled
4: enabled
6: disabled
8: disabled
Функция
g запрашивает
расширенные привилегии, и только команды и функции, которые вызываются после запроса и внутри функции
g, получают
привилегии.
<SCRIPT ARCHIVE="ckHistory.jar" ID="a">
function printEnabled(i) {
if (history[0] == "") {
document.write(i + ": disabled<BR>");
} else {
document.write(i + ": enabled<BR>");
}
}
function f() {
printEnabled(1);
}
function g() {
printEnabled(2);
netscape.security.PrivilegeManager.enablePrivilege(
"UniversalBrowserRead");
printEnabled(3);
f();
printEnabled(4);
}
function h() {
printEnabled(5);
g();
printEnabled(6);
}
printEnabled(7);
h();
printEnabled(8);
</SCRIPT>