Использование JFileChooser в JApplet
-
04-07-2019 - |
Вопрос
Может ли 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 сказал, что вы также должны подписать свой апплет. Р>
Итак, ваш ответ - да, я делал это раньше, поэтому я знаю, что это можно сделать.