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

Изоляция Пакетов в Расширениях

Можно дополнительно изолировать пакеты в файлах JAR расширения как дополнительные меры безопасности. Если пакет изолируется, все классы, определенные в том пакете, должны произойти из единственного файла JAR.

Без изоляции "враждебная" программа могла создать class и определить ее, чтобы быть элементом одного из Ваших пакетов расширения. У враждебного программного обеспечения тогда был бы свободный доступ к защищенным от пакета элементам Вашего пакета расширения.

Изоляция пакетов в расширениях не отличается чем изоляция любых упакованных JAR классов. Чтобы изолировать Ваши пакеты расширения, следует добавить заголовок Sealed к декларации файла JAR, содержащего Ваше расширение. Можно изолировать отдельные пакеты, связывая заголовок Sealed с заголовками Name пакетов. Заголовок Sealed, не связанный с отдельным пакетом в архиве, сигнализирует, что все пакеты изолируются. Такой "глобальный" заголовок Sealed переопределяется любыми заголовками Sealed, связанными с отдельными пакетами. Значением, связанным с заголовком Sealed, является или true или false.

Примеры

Давайте смотреть на несколько демонстрационных файлов манифеста. Поскольку эти примеры предполагают, что файл JAR содержит эти пакеты:

com/myCompany/package_1/
com/myCompany/package_2/
com/myCompany/package_3/
com/myCompany/package_4/

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

Manifest-Version: 1.0
Sealed: true

Все пакеты в любом файле JAR, имеющем эту декларацию, будут изолированы.

Если бы Вы хотели изолировать только com.myCompany.package_3, то Вы могли бы сделать так с этой декларацией:

Manifest-Version: 1.0

Name: com/myCompany/package_3/
Sealed: true

В этом примере единственный заголовок Sealed состоит в том, который связал с заголовком Name пакета com.myCompany.package_3, настолько только, что пакет изолируется. (Заголовок Sealed связывается с заголовком Name, потому что нет никаких пустых строк между ними.)

Для заключительного примера предположите, что Вы хотели изолировать все пакеты за исключением com.myCompany.package_2. Вы могли выполнить это с декларацией как это:

Manifest-Version: 1.0
Sealed: true

Name: com/myCompany/package_2/
Sealed: false

В этом примере  заголовок Sealed: true на уровне архива указывает, что все пакеты в файле JAR должны быть изолированы. Однако, декларации также  связали заголовок Sealed: false с пакетом com.myCompany.package_2, и тот заголовок переопределяет изоляцию на уровне архива для того пакета. Поэтому эта декларация заставит все пакеты быть изолированными за исключением com.myCompany.package_2.


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

Предыдущая страница: Установка Полномочий для Расширений
Следующая страница: Конец Следа