Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации
lang = dir "en-US" = "буква" xml:lang = "en-US">

Смешивание Кода Без знака и Со знаком
Обеспечение Безопасности Приложения и Апплета

Содержание

Краткий обзор

Веб-приложения Запуска Java со знаком и апплеты, которые содержат подписанные и компоненты без знака, могли потенциально быть опасными, если смешанный код не был предназначен поставщиком приложения. С Java SE 6 Обновлений 19 выпусков (или позже), когда программа содержит и подписанные и компоненты без знака, повышается диалоговое окно предупреждения. Следующее является примером диалогового окна, которое может видеть пользователь:

Снимок экрана Смешанного Диалогового окна Предупреждения Кода

Щелчок Больше информации... соединяется, переводит следующую панель в рабочее состояние:

Снимок экрана Большего количества информационной Панели

Щелчок по Yes блокирует потенциально опасные компоненты от выполнения, и программа может завершиться. Если пользователь не нажимает кнопку, приложение или апплет продолжают выполнение с некоторыми дополнительными защитами.

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


Отметьте: Если какие-либо понятия неясны, такой как, как изменить файл манифеста, или как подписать файл фляги, или как использовать конфигурационный файл развертывания, см. для получения дополнительной информации для полезных ссылок.

Смешанные Опции Защиты Кода для Пользователей

Есть два механизма для того, чтобы управлять, как обрабатываются смешанные программы кода.
Примечание версии: Чтобы использовать в своих интересах эти усовершенствования в защите, пользователи должны установить Java SE или Java для Бизнеса 6 Обновлений 19 выпусков (или позже) и использовать новый Плагин Java, который включается по умолчанию. Чтобы использовать более ранний JRE с новым Плагином Java, Вы должны установить Java для Бизнеса 5.0 Обновлений 24 выпуска (или позже) или Java для Бизнеса 1.4.2_26 выпуск (или позже), чтобы включить смешанному усовершенствованию в защите кода для тех семейств выпуска.
Отметьте 1: Смешанная проверка кода эти 1.4.2 выпуска доступна только для платформы Windows.
Отметьте 2: Для Соляриса новый Плагин Java требует Firefox 3 или позже. Netscape 7 и Firefox 2 не поддерживается.
Отметьте 3: Для получения дополнительной информации по которому платформы поддерживаются новым плагином, видят Информацию о версии для Плагина Java Следующего поколения.

Развертывание Приложений Со знаком и Апплетов Надежно Без Смешанного Предупреждения Кода

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

Два новых атрибута декларации JAR доступны, с Java SE 6 Обновлений 19, для того, чтобы развернуть подписанные приложения и апплеты. Диалоговое окно предупреждения не выводится на экран, когда один из этих явных атрибутов включается.

Разработчики и deployers должны проверить свой Java со знаком веб-приложения Запуска и апплеты, чтобы определить, смешивают ли они подписанный и код без знака. Если пользователи этих приложений и апплетов могут непреднамеренно загрузить эти приложения, и апплеты от веб-сайтов жулика, развертываясь или повторно развертываясь с одним из следующих атрибутов нужно рассмотреть. Существующие фляги со знаком должны быть оставлены после добавления одного из этих явных атрибутов. Отметьте: исходный код классов и ресурсов не требуется для того, чтобы уйти в отставку с новыми явными записями.

Trusted-Only Атрибут

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

Manifest-Version: 1.0
Trusted-Only: true
Created-By: 1.6.0-internal (Sun Microsystems Inc.)

Все классы и ресурсы в приложении или апплете должны быть подписаны и доверяться.

Trusted-Library Атрибут

Для приложений и апплетов, которые разрабатываются, чтобы позволить компоненты без знака, Trusted-Library атрибут должен использоваться. Никакое диалоговое окно предупреждения не будет выведено на экран и приложение, или апплет может загрузить файлы фляги, содержащие недоверяемые классы или ресурсы. Этот атрибут предотвращает подписанные компоненты в приложении или апплете от того, чтобы быть повторно ставившимся целью с компонентами без знака. Можно определить Trusted-Library: true в файле манифеста. Например:

Manifest-Version: 1.0
Trusted-Library: true
Created-By: 1.6.0-internal (Sun Microsystems Inc.)

Все классы и ресурсы в файле фляги, содержащем этот явный атрибут, должны быть подписаны и доверяться.

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

Все фляги доверяемой библиотеки загружаются в отдельный выделенный загрузчик класса, который уникален для экземпляра апплета или приложения. Это новое Trusted-Library загрузчик является теперь родителем нормального веб-Запуска или загрузчика класса апплета. Для назад совместимости с исходным поисковым порядком оба загрузчика сотрудничают, чтобы реализовать общий путь к классу. Непротиворечивый с предшествующими выпусками, файлы фляги лениво загружаются и открываются как необходимый найти требуемые классы и ресурсы.

Код в файле фляги, который должен быть отмечен с Trusted-Library явный атрибут, возможно, должен быть изменен немного, если он использует вызовы, которые являются зависимым загрузчиком класса, таким как единственная версия параметра Class.forName(), Class.getResource(), и Class.getResourceAsStream(), некоторые разновидности java.util.ResourceBundle.getBundle(), и любые другие методы, которые работают относительно загрузчика определения их непосредственной вызывающей стороны. Изменения только должны быть произведены, если требуемый класс или ресурс могли бы быть найдены в файле фляги, который не является a Trusted-Library (и поэтому загружается нормальным веб-Запуском или загрузчиком класса апплета).

Код в a Trusted-Library может искать нормальный загрузчик, вызывая Thread.currentThread().getContextClassLoader(). Отметьте, однако, что есть редкие обстоятельства в который getContextClassLoader() может возвратиться null. Например, это может произойти, когда сборщик "мусора" использует системный поток JRE, чтобы вызвать Object.finalize() метод недостижимого экземпляра.

Если Вы должны преобразовать класс Class.getResource() или Class.getResourceAsStream() к их ClassLoader эквиваленты, не забудьте корректировать строковый параметр как описано документацией для тех двух методов. Если исходное имя ресурса началось '/', тогда это было абсолютное имя и продвижение '/' просто потребности, которые будут удалены. Иначе, определите, если экземпляр класса, который был целью getResource вызов находится в именованном пакете. Если это - массив, следует сначала определить базовый компонентный тип массива. Вызвать Class.getName() на классе или компоненте вводят экземпляр. Если имя класса содержит кого-либо '.' символы, именно в именованном пакете должны будут предварительно ожидаться к исходному имени ресурса. Определите имя пакета, удаляя любые символы после, и включая, запаздывание '.' символ. Затем, замените любого остающегося '.' символы с '/' символы. Наконец, добавьте запаздывание '/' и добавьте исходную строку имени ресурса. Эту новую строку можно теперь передать к ClassLoader версия getResource() или getResourceAsStream() методы.

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

Смешанный FAQ Кода

Для получения дополнительной информации


Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами