Wiki-учебник по веб-технологиям: JavaScript/ИспользованиеМаркированныхСкриптов ...

Главная | Каталог |

Использование маркированных скриптов


Модель безопасности JavaScript для маркированных скриптов базируется на модели безопасности Java для маркированных объектов. Вы можете маркировать инлайн-скрипты (те, которые находятся в тэгах SCRIPT), скрипты в обработчики событий, объекты/entities JavaScript и отдельные JavaScript-файлы.

JavaScript 1.1 и более ранние версии. Маркировка скриптов отсутствует.

Маркированные скрипты. Введение.


Маркированный скрипт запрашивает расширенные привилегии, получая доступ к закрытой информации. Он запрашивает эти привилегии через использование LiveConnect и Java-классов, называемых Java Capabilities API. Эти классы добавляют возможности и уточняют управление, предоставляемое стандартным Java-классом SecurityManager. Вы можете использовать эти классы для осуществления высокоточного контроля в так называемом «sandbox/песочном ящике» – термин Java для жёстких ограничений, в пределах которых код Java обязан выполняться.

Решения по управлению доступом сводятся к тому, кто и что может делать. В этой модели principal\принципал представляет «кто», target\цель представляет «что», а privileges\привилегии, ассоциированные с принципалом, представляют авторизацию (или запрет авторизации) принципалу для доступа к специфической цели.

После написания скрипта вы маркируете его, используя утилиту Netscape Signing Tool. Эта утилита ассоциирует цифровую подпись со скриптом на HTML-странице. Владельцем это цифровой подписи является определённый принципал (реальный объект, такой как Netscape или John Smith). Одна HTML-страница может иметь скрипты, маркированные разными принципалами. Цифровая подпись помещается в Java Archive (JAR) -файл. Если Вы маркируете инлайн-скрипт, обработчик события или объект JavaScript, Netscape Signing Tool сохраняет только подпись и идентификатор для скрипта в JAR-файле. Если вы маркируете JavaScript-файл утилитой Netscape Signing Tool, она также сохраняет источник в JAR-файле.

Ассоциированный принципал позволяет пользователю подтверждать правильность сертификата, используемого для маркировки скрипта. Он также позволяет пользователю убедиться, что данный скрипт подделан после маркировки. Пользователь может затем решить, дать ли привилегии на основе проведённой идентификации сертификата пользователя и проверки целостности скрипта.

Запомните, что пользователь может запретить выдачу привилегий, запрошенных вашим скриптом – вы должны создавать ваши скрипты так, чтобы они адекватно реагировали на такую ситуацию.

В этой главе предполагается, что вы знакомы с основными принципами маркировки объектов с использованием Java Capabilities API и с созданием цифровой подписи. Следующие документы содержать соответствующую информацию по этому вопросу:


SSL-серверы и немаркированные скрипты

Альтернативой маркировке ваших скриптов утилитой Netscape Signing Tool является обслуживание их сервером безопасности/secure server. Navigator рассматривает все страницы, обслуживаемые SSL-сервером, как если бы они были маркированы ключом public такого сервера. В этом случае вам не нужно маркировать отдельные скрипты.

Если вы имеете SSL-сервер, то вам будет намного проще организовать работу ваших скриптов как маркированных. Это особенно актуально, если вы динамически генерируете скрипты на вашем сервере и хотите, чтобы они работали как маркированные.

SSL-серверы и немаркированные скрипты


Альтернативой маркировке ваших скриптов утилитой Netscape Signing Tool является обслуживание их сервером безопасности/secure server. Navigator рассматривает все страницы, обслуживаемые SSL-сервером, как если бы они были маркированы ключом public такого сервера. В этом случае вам не нужно маркировать отдельные скрипты.

Если вы имеете SSL-сервер, то вам будет намного проще организовать работу ваших скриптов как маркированных. Это особенно актуально, если вы динамически генерируете скрипты на вашем сервере и хотите, чтобы они работали как маркированные.

Принципалы кодовой базы


Как и Java, JavaScript поддерживает принципалы кодовой базы/codebase principals. Принципал кодовой базы это принципал, полученный из источника скрипта, а не при проверке цифровой подписи сертификата. Поскольку принципалы кодовой базы обеспечивают слабую защиту, они по умолчанию отключены в Navigator'е.

При публикации ваши скрипты не должны полагаться на то, что принципалы кодовой базы включены. Вы, возможно, захотите включить принципалы кодовой базы при разработке ваших скриптов, но вы должны промаркировать их перед публикацией.

Чтобы включить принципалы кодовой базы, конечные пользователи обязаны добавить соответствующую настройку в файл настроек Navigator'а. Для этого нужно добавить в файл настроек такую строку:

user_pref("signed.applets.codebase_principal_support", true);


Даже если принципалы кодовой базы отключены, Navigator отслеживает принципалы кодовой базы для использования при выполнении политики одного источника. Немаркированные скрипты имеют ассоциированный набор принципалов, куда входит один элемент – принципал кодовой базы для страницы, содержащей скрипт. Маркированные скрипты также имеют принципалы кодовой базы в дополнение к более строгим принципалам сертификата.