Вопрос

Может ли JApplet использовать JFileChooser чтобы пользователь мог выбрать файл на своем жестком диске?Или это нарушит безопасность Java-апплета?(Я предполагаю, что используются настройки безопасности по умолчанию.Я не хочу просить пользователей предоставить мне дополнительные разрешения.)

Это было полезно?

Решение

В этой теме указано, что вам необходимо подписать свой апплет цифровой подписью до того, как JFileChooser будет разрешен.

Другие советы

Как уже упоминалось, вам необходимо подписать свой апплет, что приведет к появлению «неопределенного предупреждения безопасности», когда пользователю будет представлен апплет.Когда пользователь соглашается запустить этот апплет, ему предоставляется полный доступ и он функционирует как обычное приложение с очевидными последствиями для безопасности.У меня та же дилемма относительно веб-приложения, над которым я работаю, и я еще не уверен, будет ли оно развернуто.

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

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

  • Проверка происхождения кода апплета.

    URL appletUrl = MyApplet.class.getProtectionDomain().getCodeSource().getLocation();
    if(appletUrl.toString().equalsIgnoreCase(safeAppletUrl) == false)
       return false;
    
  • Проверка базового URL-адреса, с которого был запущен апплет.

    URL documentUrl = this.getDocumentBase(); 
    if(documentUrl.toString().equalsIgnoreCase(safeDocumentUrl) == false)
       return false;
    

В этом случае (при использовании настроек по умолчанию) вы правы, менеджер безопасности по умолчанию не разрешает доступ к локальным файлам.

Возможно, вам придется использовать PrivilegedAction для чтения чего-либо с жесткого диска пользователя. Точно так же, как @mmyers сказал, что вы также должны подписать свой апплет.

Итак, ваш ответ - да, я делал это раньше, поэтому я знаю, что это можно сделать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top