У нас есть веб-приложение, которое использует апплет 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, core, dev, home и т.д.), Но вы не можете просматривать их.
Апплет имеет доступ к локальным файлам с последним Firefox 24 для Mac на одном компьютере (Java 7u45, Mac OS X 10.9). То же самое с Safari 6 и Mac OS X 10.8.5, не говоря уже о машинах Linux и Windows в различных конфигурациях: нет проблем с доступом к локальным файлам.
Имея все вышеизложенное, я должен заключить, что мы столкнулись с проблемой, специфичной для Safari 7.
Есть ли у вас какие-либо идеи по этой проблеме? Любые мысли приветствуются.
Cheers, Юрий
РЕДАКТИРОВАТЬ (ответ): в Safari 7 есть новый параметр безопасности: безопасный/небезопасный режим (я думаю, что это только для подключаемого модуля Java). Вы можете разрешить плагин Java работать в режиме Unsafe для отдельных веб-сайтов или для всех сайтов. В небезопасном режиме апплеты будут иметь неограниченный доступ к локальной файловой системе.
Похоже, что этот параметр безопасности работает поверх собственных настроек безопасности Java (ограниченный/неограниченный доступ).
Этот параметр доступен через настройки Safari/вкладка "Безопасность" / "Интернет-плагины": управлять настройками веб-сайта (затем выберите Java-плагин).
Итак, как только я уже ответил на свой собственный оригинальный вопрос, я бы предпочел перефразировать его: возможно ли установить режим "Небезопасный" или переопределить безопасный режим для определенного веб-сайта/URL-адреса без запроса пользователя о настройке этого предпочтения безопасности? Может быть, что-то вроде сертификата разработчика Apple поможет?
Еще раз спасибо!