У нас есть веб-приложение, которое использует Java-апплет для управления файлами на локальном диске. Мы разрабатываем его довольно долго и уже знаем все типы проблем, которые могут возникнуть у апплета с современными ОС и браузерами, а также с последними версиями Java и новыми ограничениями безопасности.
Вчера Apple выпустила новую Mac OS 10.9 Mavericks с новым браузером Safari (7.0). Я протестировал наше веб-приложение в Safari 7 / Mac OS X 10.9 и обнаружил, что Safari 7 (возможно?) Блокирует доступ к локальным файлам из Java-апплета.
Хотя апплет (подписанный действующим сертификатом Thawte и выполненный со всеми требованиями безопасности, специфичными для Java 7u45) работает в неограниченном режиме с полным доступом к локальной файловой системе (это указано в запросе безопасности Java), при попытке доступа к локальному файлу он перехватывает исключение fileNotFoundException :
java.io.FileNotFoundException: /Users/yury/Pictures/Paris 2012/L1050258.jpg (Operation not permitted)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at com.trackntag.a.v.a(Unknown Source)
Кроме того, при открытии диалогового окна открытия файла Java из апплета файлы не отображаются, а папки в селекторе папок не имеют значков (обычно они должны быть). Когда вы возвращаетесь в корневую папку, вы можете видеть папки верхнего уровня (bin, cores, dev, home и т. Д.), Но не можете просматривать их.
У апплета есть доступ к локальным файлам в последней версии Firefox 24 для Mac на том же компьютере (Java 7u45, Mac OS X 10.9). То же самое с Safari 6 и Mac OS X 10.8.5, не говоря уже о машинах Linux и Windows в различных конфигурациях: нет проблем с доступом к локальным файлам.
Имея все вышесказанное, я должен сделать вывод, что мы столкнулись с проблемой, характерной для Safari 7.
Есть ли у вас идеи по этому поводу? Приветствуются любые мысли.
Ура, Юрий
РЕДАКТИРОВАТЬ (ответ): в Safari 7 есть новый параметр безопасности: безопасный / небезопасный режим (я думаю, это только для подключаемого модуля Java). Вы можете разрешить плагину Java работать в небезопасном режиме для отдельных сайтов или для всех сайтов. В небезопасном режиме апплеты будут иметь неограниченный доступ к локальной файловой системе.
Похоже, что этот параметр безопасности работает поверх собственных настроек безопасности Java (ограниченный / неограниченный доступ).
Этот параметр доступен в настройках Safari / вкладке «Безопасность» / «Интернет-плагины»: управление настройками веб-сайта (затем выберите плагин Java).
Итак, как только я уже ответил на свой исходный вопрос, я бы предпочел его перефразировать: можно ли установить небезопасный режим или переопределить безопасный режим для определенного веб-сайта / URL-адреса, не прося пользователя установить этот параметр безопасности? Может, поможет что-то вроде сертификата разработчика Apple?
Спасибо еще раз!