Spec-Zone .ru
спецификации, руководства, описания, API
|
Java Богатое Руководство по Интернет-приложениям > Безопасность> Смешивание Подписанной и Безопасности Приложения и Апплета Обеспечения Кода Без знака
Следующие темы затрагиваются:
Подписанная Сеть Java Запускает приложения и апплеты, которые содержат подписанные и компоненты без знака, могло потенциально быть опасным, если смешанный код не был предназначен поставщиком приложения. Когда программа содержит и подписанные и компоненты без знака, диалоговое окно предупреждения повышается. Следующее является примером диалогового окна, которое может видеть пользователь:
Щелчок Больше информации... соединяется, переводит следующую панель в рабочее состояние:
Щелчок по 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
Эта опция не рекомендуется. Программное обеспечение отключается от проверки смешивание, доверял и недоверяемый код, оставляя пользователя, чтобы выполнить потенциально опасный код без предупреждения и без дополнительных защит.
Примечание версии: Чтобы использовать в своих интересах эти усовершенствования в защите, пользователи должны установить Java SE или Java для Бизнеса 6 Обновлений 19 выпусков (или позже) и использовать Плагин Java, который включается по умолчанию. Чтобы использовать более ранний JRE с Плагином Java, Вы должны установить Java для Бизнеса 5.0 Обновлений 24 выпуска (или позже) или Java для Бизнеса 1.4.2_26 выпуск (или позже), чтобы включить смешанному усовершенствованию в защите кода для тех семейств выпуска.
Этот раздел описывает лучшие методы для разработчиков и deployers, чтобы защитить их приложения и апплеты от того, чтобы быть злонамеренно повторно ставившимся целью, заменяя доверяемые компоненты недоверяемыми.
Два атрибута декларации JAR доступны для развертывания подписанных приложений и апплетов. Диалоговое окно предупреждения не выводится на экран, когда один из этих явных атрибутов включается.
Разработчики и 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
загрузчик является теперь родителем нормальной Сети, Запускаются или апплет загрузчик class. Для назад совместимости с исходным порядком поиска оба загрузчика сотрудничают, чтобы реализовать общий путь class. Непротиворечивый с предшествующими выпусками, файлы фляги лениво загружаются и открываются как необходимый найти требуемые классы и ресурсы. Код в файле фляги, который должен быть отмечен с Trusted-Library
явный атрибут, возможно, должен быть изменен немного, если он использует вызовы, которые являются зависимым загрузчиком class, таким как единственная версия параметра Class.forName()
, Class.getResource()
, и Class.getResourceAsStream()
, некоторые разновидности java.util.ResourceBundle.getBundle()
, и любые другие методы, которые работают относительно загрузчика определения их непосредственной вызывающей стороны. Изменения только должны быть произведены, если требуемый class или ресурс могли бы быть найдены в файле фляги, который не является a Trusted-Library
(и поэтому загружается нормальной Сетью, Запускаются или апплет загрузчик class).
Код в a Trusted-Library
может искать нормальный загрузчик, вызывая Thread.currentThread().getContextClassLoader()
. Отметьте, однако, что есть редкие обстоятельства в который getContextClassLoader()
может возвратиться null
. Например, это может произойти, когда сборщик "мусора" использует системный поток JRE, чтобы вызвать Object.finalize()
метод недостижимого экземпляра.
Если Вы должны преобразовать class в Class.getResource()
или Class.getResourceAsStream()
к их ClassLoader
эквиваленты, не забудьте корректировать строковый параметр как описано документацией для тех двух методов. Если исходное имя ресурса началось '/'
, тогда это было абсолютное имя и продвижение '/'
просто потребности, которые будут удалены. Иначе, определите, если экземпляр class, который был целью getResource
вызов находится в именованном пакете. Если это - массив, следует сначала определить базовый компонентный тип массива. Вызвать Class.getName()
на class или компоненте вводят экземпляр. Если имя class содержит кого-либо '.'
символы, именно в именованном пакете должны будут предварительно ожидаться к исходному имени ресурса. Определите имя пакета, удаляя любые символы после, и включая, запаздывание '.'
символ. Затем, замените любого остающегося '.'
символы с '/'
символы. Наконец, добавьте запаздывание '/'
и добавьте исходную строку имени ресурса. Эту новую строку можно теперь передать к ClassLoader
версия getResource()
или getResourceAsStream()
методы.
Обычно, забота должна быть проявлена, чтобы гарантировать, что код в доверяемой библиотеке пишется осторожным и безопасным способом и иначе совместимый с тем, чтобы быть загруженным в отдельном экземпляре загрузчика class от любых остающихся фляг, которые являются частью приложения и загружаются нормальным загрузчиком.
Ответ: Если Вы не используете явные записи, и Вы встречаетесь с диалоговым окном предупреждения, запуская Ваше подписанное приложение или апплет, Ваша программа содержит смешанный код и влияется.
Ответ: Тест Ваша Сеть 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 и Плагина Java. Получите последнюю версию Firefox в
Ответ: следующий 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
бросаются после того, как смешанные компоненты были ранее обнаружены, и решение было принято, чтобы позволить им сосуществовать. Исключения указывают, что коллизия имени компонента (имя ресурса или имя пакета class) была обнаружена между доверяемыми и недоверяемыми компонентами и запросом, чтобы загрузить ресурс, или class отрицался. "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 6 Обновлений 21. sandboxed файлы фляги должны быть подписаны таким же образом (те же самые сертификаты подписания) как один или больше доверяемых файлов фляги в файле JNLP, который использует all-permissions
модель обеспечения безопасности, и доверяемый файл фляги должны быть открыты Сетью Java, Запускаются до любого sandboxed ресурса, загружаемого который доли то же самое подписывающее лицо. Это означает, что доверяемый файл фляги должен быть ранее в Веб-порядке поиска фляги Запуска Java, или это инициировано, чтобы загрузиться независимый от простого порядка поиска при помощи функции индексации фляги. В Java Запускается Сеть, основное приложение фляги JNLP ищутся сначала, сопровождаются в порядке объявления любыми расширениями JNLP. Файлы фляги, маркированные в пределах JNLP как "нетерпеливый", ищутся сначала, сопровождаются "ленивыми" файлами фляги, сопровождаемыми любыми файлами фляги, маркированными как использование функции "части".
Ответ: Нет, на ME Java не влияют.