L’applet Java ne peut pas ouvrir les fichiers sous Safari 7 (Mac OS X 10.9)

Nous avons une application Web qui utilise l’applet Java pour manipuler les fichiers sur le disque local. Nous le développons depuis un certain temps et nous connaissons déjà tous les types de problèmes qu’une applet peut avoir avec les systèmes d’exploitation et les navigateurs modernes, les dernières versions de Java et les nouvelles ressortingctions de sécurité.

Hier, Apple a sorti son nouveau Mac OS 10.9 Mavericks avec le nouveau navigateur Safari (7.0). J’ai testé notre application Web sous Safari 7 / Mac OS X 10.9 pour constater que Safari 7 (probablement?) Bloque l’access aux fichiers locaux depuis l’applet Java.

Bien que l’applet (signée avec un certificate Thawte valide et avec toutes les exigences de sécurité spécifiques à Java 7u45) s’exécute en mode illimité avec un access complet au système de fichiers local (l’invite de sécurité Java indique cela), en tentant d’accéder au fichier local :

java.io.FileNotFoundException: /Users/yury/Pictures/Paris 2012/L1050258.jpg (Operation not permitted) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(FileInputStream.java:146) at com.trackntag.ava(Unknown Source) 

De même, lors de l’ouverture de la boîte de dialog d’ouverture du fichier Java à partir de l’applet, aucun fichier ne s’affiche et les dossiers du sélecteur de dossier ne comportent aucune icône (normalement, ils devraient en avoir). Lorsque vous revenez au dossier racine, vous pouvez voir les dossiers de niveau supérieur (bin, cœurs, dev, home, etc.), mais vous ne pouvez pas y accéder.

L’applet a un access aux fichiers locaux avec la dernière version de Firefox 24 pour Mac, sur la même machine (Java 7u45, Mac OS X 10.9). Idem avec Safari 6 et Mac OS X 10.8.5, sans parler des machines Linux et Windows dans différentes configurations: pas de problèmes d’access aux fichiers locaux.

Ayant tout ce qui précède, je dois conclure que nous avons rencontré le problème spécifique à Safari 7.

Avez-vous des idées sur cette question? Toutes les pensées sont grandement appréciées.

Cheers, Yury

EDIT (Answer): Dans Safari 7, il existe un nouveau paramètre de sécurité: le mode Safe / Unsafe (je pense que c’est uniquement pour le plug-in Java). Vous pouvez autoriser le plug-in Java à fonctionner en mode non sécurisé pour des sites Web individuels ou pour tous les sites. En mode non sécurisé, les applets auront un access illimité au système de fichiers local.

Il semble que ce paramètre de sécurité fonctionne en plus des parameters de sécurité de Java (access restreint / illimité).

Ce paramètre est disponible via les préférences Safari / onglet Sécurité / plugins Internet: gérer les parameters du site Web (puis sélectionner le plug-in Java).

Donc, une fois que j’ai déjà répondu à ma question initiale, je préfère la reformuler: est-il possible de définir le mode non sécurisé ou de remplacer le mode sans échec pour un site Web / une URL spécifique sans demander à l’utilisateur de définir cette préférence de sécurité? Peut-être que quelque chose comme un certificate de développeur Apple pourrait aider?

Merci encore!

J’ai eu un problème similaire avec une autre application Java aujourd’hui. Je pense que vous devrez peut-être append votre application à la liste “Autoriser les applications ci-dessous …” dans cette boîte de dialog ( System Prefs -> Security & Privacy -> Accessibility ):

entrer la description de l'image ici

Pour Safari 11:

  1. allez dans Préférences Safari-> Sites Web-> Plug-ins et sélectionnez Java
  2. à droite, vous pouvez voir la liste des «Autoriser les sites Web à utiliser ce plug-in avec les parameters ci-dessous».
  3. sélectionnez maintenant le site Web
  4. Appuyez sur le bouton Option et maintenez-le enfoncé, puis cliquez sur les trois options (Demander, Désactiver, Activé), vous verrez l’option supplémentaire «Exécuter en mode sans échec» – décochez cette option.

entrer la description de l'image ici