Подтвердить что ты не робот

Вы можете подписать апплет Java, но сохранить его в песочнице (НЕ дать ему полный доступ к пользовательскому компьютеру)?

Благодаря последним изменениям в Oracle, мне кажется, что я должен подписать апплет, даже если мне не нужен, или я хочу, чтобы у него был неограниченный доступ к пользовательскому компьютеру (именно поэтому его неподписанный в настоящее время). В частности, я не хочу предупреждения, которое они показывают для подписанных апплетов:

Это приложение будет работать с неограниченным доступом, который может привести к риску вашего компьютера и личной информации.

..., который напугает людей, использующих его.

Можно ли подписать апплет, но пометить его каким-то образом, чтобы сказать "но продолжать использовать песочницу"?

Единственная причина, по которой я его подписал, - это то, что с версии 7, обновление 40, Oracle еще больше увеличила потребность ворчащих пользователей при запуске неподписанных апплетов. Раньше было, что вы можете проверить коробку, в которой вам доверяют апплет один раз, и это будет запомнено. Начиная с обновления 40, он запоминается только для этого сеанса браузера; предупреждение появляется снова, если вы закроете браузер и вернетесь позже. Они также сказали, что они будут отключать беззнаковые апплеты полностью в "будущей версии" подключаемого модуля Java.

4b9b3361

Ответ 1

Да, вы можете. Эта страница показывает, как это сделать (ну, в основном, вам нужна эта страница). Существует два основных этапа:

  • Поместите атрибуты Permissions и Codebase в файл манифеста:

    Permissions: sandbox
    Codebase: *.myserver.com

    Эти новые атрибуты были введены в Java 7 Update 25 и обсуждаются здесь. Первая страница, указанная выше, показывает только Codebase: myserver.com, но большинство сайтов захотят получить подстановочный знак выше. (Я не знаю, требуется ли атрибут Codebase для песочницы апплета, но, похоже, это хорошая идея для большинства подписанных апплетов.)

    Затем используйте этот файл манифеста при создании своего баннера, например:

    jar cvfm YourJarFile.jar your_manifest_file.txt classes_and_such

    Эти атрибуты закроются в файле MANIFEST.MF в банке, в котором говорится, что среда выполнения Java должна поддерживать изолированный файл applet.

  • В тэге <applet> вы должны указать параметр Permissions, как описано здесь:

    <applet code='yourAppletClass' archive='YourJarFile.jar'>
        <param name="permissions" value="sandbox">
    </applet>

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

Если вы выполните оба действия выше, пользователь получит гораздо более обнадеживающее сообщение (и, предположительно, апплет остается изолированным):

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

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


(В ходе запроса этого вопроса я нашел ответ, но, поскольку ответ был не на Stack Overflow, я думал, что буду идти дальше, и опубликует вопрос и ответ.)