2013-04-17 1 views
7

Я использую Mac 10.7 под управлением Java 1.7.0_21. Я пытаюсь запустить приложение апплета Java, которое подписано, и к концу приложения я получаю всплывающее всплывающее сообщение о смешанном режиме: «Блокировать потенциально опасные компоненты из-за запуска?». Все банки, которые я использую, подписываются.Java popup говорит, что приложения содержат как неподписанные, так и подписанные коды

Я могу запустить одно и то же приложение апплета на Mac 10.6 под управлением Java 6, и я не получаю предупреждение о смешанном режиме. Я также могу запустить приложение на окнах без предупреждения о смешанном режиме.

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

Я нашел предупреждение о смешанном режиме в googled и нашел эту ссылку.

http://docs.oracle.com/javase/6/docs/technotes/guides/jweb/mixed_code.html#manifest

и после прочтения этой ссылке, я немного запутался. Согласно этой ссылке, похоже, что мне нужен атрибут «Доверяемый» или «Доверенная библиотека», упомянутый в моем файле манифеста. Я посмотрел на свой файл манифеста, и у них нет этих атрибутов, поэтому я должен положить их или просто тот факт, что банки были подписаны, должно быть, было достаточно.

Может кто-нибудь, пожалуйста, помогите мне понять, почему я получаю эту ошибку, даже когда все подписано?

ответ

8

Обновление 21 Java 7 - это сильное обновление безопасности, которое приносит определенное количество нарушений.

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

Ваша проблема заключается в этом одном:

Площадь: развернуть/плагин

Сводка: всплывающее окно безопасности при закрытии приложению

Начиная с JDK 7u21, JavaScript код, который вызывает код внутри подписанного апплета, работающего со всеми разрешениями, рассматривается как смешанный код, а предупреждения предупреждаются, если подписанные файлы JAR не помечены как Trusted-Library=true атрибут. См. «Смешивание кода с разрешениями и кодом без разрешений» (doc link) ».

Для подписанного апплета со всеми разрешениями на вызов JavaScript не появляется диалоговое окно безопасности (со смешанным предупреждением кода). Однако в некоторых сценариях отображается смешанное кодовое предупреждение.

Хорошие новости: есть обходной путь:

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

+0

Здесь мы http://www.jroller.com/tackline/entry/mixing_trusted_and_untrusted_code/Все приложение невероятно маловероятно, чтобы быть безопасным, если рассматривать его как доверенную библиотеку (неудивительно, что есть хорошая для «библиотеки» в " доверенная библиотека "). –

2

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

http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/properties.html

Создайте файл Следование на рабочей станции пользователя. C:\Windows\Sun\Java\Deployment\deployment.properties

В файле добавьте следующую строку: deployment.security.mixcode="HIDE_RUN"

Это подскажет Java, чтобы скрыть предупреждение о безопасности и запустите апплет, когда есть смешанный код условия. Кроме того, на выпуске отмечает он говорит:

По JDK 7u21, JavaScript кода, который вызывает код в привилегированном апплета рассматриваются как смешанный код и предупреждение диалоги достаются если подписанных файлы JAR не помечены атрибут Trusted-Library.

Дополнительную информацию см. В разделе Смешивание кода привилегированного кода и песочницы .

Выпуск JDK 7u21 позволяет пользователям принимать более обоснованные решения перед запуском Rich Internet Applications (RIA), предлагая пользователям для получения разрешений до запуска RIA. Эти диалоговые окна разрешений включают в себя информацию о сертификате, используемом для подписания приложения, местоположении приложения и уровне доступа, который запрашивает приложение . Для получения дополнительной информации см. Принятие пользователем RIA.

FYI, JRE 6u19, если апплет содержит как привилегированные компоненты, так и компоненты песочницы, отображаются диалоговые окна с предупреждением.

+0

Если вы отметите весь апплет как доверенную библиотеку, он почти наверняка станет уязвимостью безопасности. Отказ от безопасности PlugIn/WebStart вряд ли будет хорошей идеей. –

2

У меня также есть апплет, который сгенерировал это предупреждение о безопасности, начиная с JRE 1.7.0_21.

Вот что я узнал. «Trusted-Only: true», который вы бы вложили в манифест апплета, если вы не хотите, чтобы пользователь спрашивал, разрешит ли он вызов другой подписанной банке. Звонок будет заблокирован без предупреждения о безопасности. «Доверенная библиотека: правда» вы добавляете в банку, которую вы вызываете. Если это находится в манифесте банки, и банка подписывается тогда, когда ваш апплет вызывает его, не будет предупреждения о безопасности, и вызов не будет заблокирован.

В моем апплете используется swing-layout-1.0.4.jar. Чтобы решить проблему, мне пришлось добавить «Trusted-Library: true» в swing-layout-1.0.4.jar. Вы должны это сделать, используя приложение jar.exe в JDK.

баночка vcmf свинг-макет 1.0.4a.jar MyManifest.mf свинг-макет 1.0.4.jar

MyManifest.mf представляет собой текстовый файл, содержащий "Trusted-библиотеку: правда". Пространство между: и true важно, и вы должны иметь возврат каретки в конце строки.

По какой-то причине я не мог заставить это работать, поэтому я перестроил макет с использованием netbeans. Источники для swing-layout-1.0.4 являются частью установки netbeans (под платформой). Я распаковал его, открыв его как проект. В файлах я изменил файл манифеста на магическую линию (опять-таки важно иметь пробел после: и пустую строку в конце файла манифеста) и нажать на сборку. Затем я подписал банку и больше не предупреждал о безопасности.

Я надеюсь, что это помогает или, по крайней мере, указывает на вас в правильном направлении

+0

Если вы отметите весь апплет как доверенную библиотеку, он почти наверняка станет уязвимостью безопасности. –

+0

@tackline не могли бы вы рассказать об этом? Как мы отмечаем только часть апплета как доверенную библиотеку? –

+0

@CarlManaster Поместите библиотечную часть в отдельную банку (и убедитесь, что код в безопасности). –

1

Спасибо всем за ваши ответы. Я попытался добавить Trusted-Library = true на небольшой выборке и, похоже, работает. Итак, теперь я попытаюсь обновить файл манифеста всех моих банок. И так как мы используем муравей, я буду делать следующее:

 <jar update="true" jarfile="${deploy.dir}/javaApp.jar"> 
      <manifest> 
       <attribute name="Trusted-Library" value="true" /> 
      </manifest> 
     </jar> 

для обновления файлов манифеста.

 Смежные вопросы

  • Нет связанных вопросов^_^