EDIT: из-за ошибки в Java 7 Update 45 вы не должны добавлять Trusted-Library в ваш файл манифеста. Просто добавьте новый атрибут Caller-Allowable-Codebase. См. Этот вопрос для получения дополнительной информации: Манифест Java-апплета - Разрешить все Caller-Allowable-Codebase
Обновление 21 для Java 7 было выпущено 16 апреля 2013 года, и наш апплет начал показывать это диалоговое окно с предупреждением.
В примечаниях к выпуску:
Начиная с JDK 7u21 код JavaScript, который вызывает код в привилегированном апплете, обрабатывается как смешанный код, и появляются диалоговые окна с предупреждениями, если подписанные файлы JAR не помечены атрибутом Trusted-Library.
Чтобы исправить это, отредактируйте ваш файл manifest.mf и добавьте следующую строку:
Trusted-Library: true
Вы должны быть очень осторожны, прежде чем делать это, хотя. Если ваш подписанный апплет может быть вызван из javascript, то злонамеренный пользователь потенциально может совершать вредоносные действия на компьютерах ваших пользователей.
Один из быстрых способов обезопасить ваш апплет - предотвратить его запуск на других веб-сайтах. Сделайте это, поместив код в метод init()
, который просматривает getCodeBase().getHost()
и выдает исключение, если оно не соответствует вашему сайту.
Java 7 Update 25 представляет другой способ ограничения сайтов, на которых может выполняться ваш апплет. Вы можете установить атрибут Codebase в своем файле манифеста следующим образом:
Codebase: test.example.com www.example.com
Java 7 Update 45 (выпущено 16 октября 2013 г.) вносит дополнительные изменения в систему LiveConnect (мост javascript-to-applet), которые могут вызвать другое приглашение. В этой статье говорится об изменениях 7u45: https://blogs.oracle.com/java-platform-group/entry/liveconnect_changes_in_7u45
Как правило, вы также захотите добавить в файл манифеста следующее, чтобы избежать запросов:
Caller-Allowable-Codebase: test.example.com www.example.com
Если вы продаете продукт с апплетом и не знаете, на каких доменах он может быть развернут, вы можете указать * здесь.