Spec-Zone .ru
спецификации, руководства, описания, API
|
Содержание
Веб-приложения Запуска Java со знаком и апплеты, которые содержат подписанные и компоненты без знака, могли потенциально быть опасными, если смешанный код не был предназначен поставщиком приложения. С Java SE 6 Обновлений 19 выпусков (или позже), когда программа содержит и подписанные и компоненты без знака, повышается диалоговое окно предупреждения. Следующее является примером диалогового окна, которое может видеть пользователь:
Щелчок Больше информации... соединяется, переводит следующую панель в рабочее состояние:
Щелчок по Yes блокирует потенциально опасные компоненты от выполнения, и программа может завершиться. Если пользователь не нажимает кнопку, приложение или апплет продолжают выполнение с некоторыми дополнительными защитами.
Повышение предупреждения является поведением по умолчанию, но есть опции, доступные, чтобы управлять, как эта ситуация обрабатывается.
Можно управлять, как смешанные программы кода обрабатываются через Панель управления Java. Следующий снимок экрана показывает четыре уровня доступного управления. См., что Смешанный код направляется к нижней части панели.
То, как получить доступ к Панели управления Java, изменяется для каждой платформы и иногда изменяется для различных выпусков платформы. На Microsoft Windows Vista и XP, можно перевести панель в рабочее состояние через Start menu > Control Panel > Java Control Panel
.
Первые три опции включают защитам программного обеспечения, но ведут себя немного по-другому.
Заключительная опция, проверка Отключения, не рекомендуется. Эта опция полностью отключает программное обеспечение от проверки смешивание, доверял и недоверяемый код, оставляя пользователя, чтобы выполнить потенциально опасный код без предупреждения и без дополнительных защит.
deployment.properties
Файл
Смешанные опции защиты кода могут также быть установлены при использовании deployment.security.mixcode
свойство развертывания, как описано в Конфигурационном файле Развертывания и Свойствах.
deployment.security.mixcode=ENABLE
Эта опция включения смешанная проверка кода. Когда с потенциальной угрозой безопасности встречаются, диалоговое окно предупреждения повышается. Это - значение по умолчанию для этого свойства.
deployment.security.mixcode=HIDE_RUN
Эта опция подавляет диалоговое окно предупреждения. Код выполняется, как будто пользователь щелкнул No от диалогового окна предупреждения.
deployment.security.mixcode=HIDE_CANCEL
Эта опция подавляет диалоговое окно предупреждения и ведет себя, как будто пользователь щелкнул по Да от диалогового окна предупреждения.
deployment.security.mixcode=DISABLE
Эта опция не рекомендуется. Программное обеспечение отключается от проверки смешивание, доверял и недоверяемый код, оставляя пользователя, чтобы выполнить потенциально опасный код без предупреждения и без дополнительных защит.
Этот раздел описывает лучшие методы для разработчиков и 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()
методы.
Обычно, забота должна быть проявлена, чтобы гарантировать, что код в доверяемой библиотеке пишется осторожным и безопасным способом и иначе совместимый с тем, чтобы быть загруженным в отдельном экземпляре загрузчика класса от любых остающихся фляг, которые являются частью приложения и загружаются нормальным загрузчиком.
Ответ: Если Вы не используете новые явные записи, и Вы встречаетесь с диалоговым окном предупреждения, запуская Ваше приложение со знаком или апплет, Ваша программа содержит смешанный код и влияется.
Ответ: Протестируйте свой Java веб-приложения Запуска и апплеты Java против Java SE или Java для Бизнеса 6 Обновлений 19 или позже. Если Вы выполняете более ранние семейства выпуска, следует дополнительно установить и протестировать свою программу при 5.0 Обновлениях 24 (или позже), или 1.4.2_26 (или позже), как соответствующую. Если Вы видите диалоговое окно предупреждения, то Java веб-приложение Запуска или апплет содержит смешанный код.
Ответ: Конечные пользователи могут щелкнуть по "Большей информации" ссылка прежде, чем решить, щелкнуть ли по "Yes" или "No" в ответ на диалоговое окно предупреждения. IT или Системные администраторы могут выбрать из одной из Смешанных опций защиты Кода и сконфигурировать рабочие столы предприятия через соответствующие свойства развертывания, описанные выше. Разработчики и deployers могут использовать новые явные записи, чтобы защитить их приложения от вмешательства. Никакое диалоговое окно предупреждения не будет выведено на экран, когда одна из этих явных записей будет использоваться.
Ответ: Две явных записи доступны поставщикам приложения, чтобы развернуться, или повторно развернуться, их Java веб-приложения Запуска и апплеты Java.
Ответ: На следующие выпуски от Oracle влияют:
Ответ: Пользователи будут видеть диалоговое окно предупреждения, если Java со знаком, веб-приложение Запуска или апплет Java содержат смешанный код независимо от того, загружается ли это с Интернета или Интранет.
Ответ: смешанная проблема кода применяется. См. вопрос на апплетах и приложениях из Интернета.
Ответ: Нет.
Ответ: Пожалуйста, свяжитесь со своим поставщиком для совета относительно их реализации.
Ответ: SE Java 6 Обновлений 19 (или позже) содержат последние исправления безопасности и Oracle, рекомендует, чтобы клиенты использовали последний выпуск.
Ответ: См. вопрос на тестировании. Кроме того, информация о версии для каждого выпуска обновления документирует последние включенные изменения.
Ответ: Вы должны использовать Firefox 3 и Плагин Java следующего поколения. Можно получить Firefox 3 через
Ответ: следующий SecurityException
сообщения описываются в информационных и отлаживающих целях только. Фактическое содержание сообщения может измениться между различными реализациями и выпусками.
Они SecurityExceptions
бросаются, когда файл фляги содержит один из новых явных атрибутов, и файл самой фляги содержит недоверяемые компоненты.
attempted to open sandboxed jar "+ url +" as Trusted-Only attempted to open sandboxed jar "+ url +" as Trusted-LibraryСледующий
SecurityException
бросается, когда файл фляги содержит новое Trusted-Only
проявите атрибут, и к недоверяемым компонентам ранее получили доступ. attempted to open Trusted-Only jar "+ url +" on sandboxed loaderСледующий
SecurityException
бросается когда по крайней мере одна фляга, содержащая Trusted-Only
явный атрибут был открыт, и последующая попытка предпринимается, чтобы загрузить недоверяемый компонент. Trusted-Only loader attempted to load sandboxed resource from "+ url"Следующие два
SecurityExceptions
бросаются, когда смешанные компоненты сначала обнаруживаются, и решение принимается, чтобы отвергнуть смешивание. В первом случае все, загруженному previosly доверяли и затем попытка, было сделано загрузить недоверяемый компонент. Второй случай является обратным условием. trusted loader attempted to load sandboxed resource from "+ url" sandboxed loader attempted to load trusted resource from "+ url"Следующие два
SecurityExceptions
бросаются после того, как смешанные компоненты были ранее обнаружены, и решение было принято, чтобы позволить им сосуществовать. Исключения указывают, что коллизия имени компонента (имя ресурса или имя пакета класса) была обнаружена между доверяемыми и недоверяемыми компонентами и запросом, чтобы загрузить ресурс, или класс отрицался. "resource \"" + name + "\" does not match trust level of other resources of the same name" "class \"" + packageName + "\" does not match trust level of other classes in the same package"Следующие два
SecurityExceptions
бросаются, когда к недоверяемым компонентам ранее получили доступ, попытка загрузить доверяемый компонент была ранее обнаружена, и решение было принято, чтобы позволить смешанным компонентам сосуществовать, и фляга, содержащая доверяемые компоненты, открывается, и коллизия имени компонента обнаруживается между доверяемыми и недоверяемыми компонентами. "untrusted resource \"" + name + "\" in class path" "untrusted class package \"" + packageName + "\" in class path"
Trusted-Library
явный атрибут. Могу я подписывать файлы фляги в sandboxed JNLP, не имея необходимость изменять JNLP, чтобы запросить all-permissions
модель обеспечения безопасности? Ответ: Да, с некоторыми ограничениями, начинающимися с Java веб-Запуск в Java SE или Java для Делового Обновления 21. sandboxed файлы фляги должны быть подписаны таким же образом (те же самые сертификаты подписания) как один или больше доверяемых файлов фляги в файле JNLP, который использует all-permissions
модель обеспечения безопасности, и доверяемый файл фляги должны быть открыты Java веб-Запуск до любого sandboxed ресурса, загружаемого который доли то же самое подписывающее лицо. Это означает, что доверяемый файл фляги должен быть ранее в веб-порядке поиска фляги Запуска Java, или это инициировано, чтобы загрузиться независимый от простого поискового порядка при помощи функции индексации фляги. В Java веб-Запуск, основное заявление фляги JNLP ищется сначала, сопровождается в порядке объявления любыми расширениями JNLP. Файлы фляги, маркированные в пределах JNLP как "нетерпеливый", ищутся сначала, сопровождаются "ленивыми" файлами фляги, сопровождаемыми любыми файлами фляги, маркированными как использование функции "части".
Ответ: Нет, на ME Java не влияют.