web-dev-qa-db-fra.com

Java ne peut pas ouvrir de fichiers sous Safari 7 (Mac OS X 10.9)

Nous avons une application Web qui utilise Java) une applet pour manipuler des fichiers sur un disque local. Nous la développons depuis un certain temps et nous connaissons déjà tous les types de problèmes qu'une applet peut avoir avec les OS modernes et navigateurs et dernières versions de Java et nouvelles restrictions de sécurité).

Hier Apple a déployé 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 juste pour découvrir que Safari 7 (probablement?) bloque l'accès aux fichiers locaux de Java.

Bien que l'applet (signé avec un certificat Thawte valide et avec toutes les exigences de sécurité spécifiques à Java 7u45 rempli)) s'exécute en mode sans restriction avec un accès complet au système de fichiers local (la promesse de sécurité Java l'indique), le tenter d'accéder au fichier local qu'il récupère 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)

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

L'applet a un accès aux fichiers locaux avec la dernière version de Firefox 24 pour Mac, sur le même ordinateur (Java 7u45, Mac OS X 10.9). Idem pour Safari 6 et Mac OS X 10.8.5, sans oublier les machines Linux et Windows dans diverses configurations: aucun problème d’accès 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.

Cordialement, Yury

EDIT (réponse): Safari 7 intègre un nouveau paramètre de sécurité: le mode Safe/Unsafe (je pense que c’est pour Java uniquement). Vous pouvez autoriser Java doit fonctionner en mode non sécurisé, que ce soit pour des sites Web individuels ou pour tous les sites. En mode non sécurisé, les applets disposeront d'un accès illimité au système de fichiers local.

Il semble que ce paramètre de sécurité fonctionne par-dessus les paramètres de sécurité propres à Java (accès restreint/non restreint).

Ce paramètre est disponible dans les préférences Safari/onglet Sécurité/plugins Internet: gérez les paramètres du site Web (puis sélectionnez Java).

Donc, une fois que j'ai déjà répondu à ma propre question initiale, je préférerais 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 Apple pourrait aider?)?

Merci encore!

49
JetLizard

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

enter image description here

4
Paul R

Pour Safari 11:

  1. allez dans les préférences Safari-> Sites Web-> Plug-ins et sélectionnez Java
  2. à droite, vous pouvez voir la liste "Autoriser les sites Web à utiliser ce plug-in avec les paramètres ci-dessous"
  3. maintenant sélectionnez le site
  4. appuyez sur le bouton Option et maintenez-le enfoncé, puis cliquez sur l'option trois (Demander, Désactiver, Activer). L'option supplémentaire "Exécuter en mode sans échec" s'affichera. Décochez cette option.

enter image description here

3
fycth