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.