2013-10-23 17 views
49

Wir haben eine Webanwendung, die Java-Applet verwendet, um Dateien auf lokaler Festplatte zu bearbeiten. Wir entwickeln es für eine ganze Weile und wir kennen bereits alle Arten von Problemen, die ein Applet mit modernen Betriebssystemen und Browsern und neuesten Java-Versionen und neuen Sicherheitsbeschränkungen haben kann.Java-Applet kann Dateien unter Safari 7 nicht öffnen (Mac OS X 10.9)

Gestern hat Apple seine neuen Mac OS 10.9 Mavericks mit dem neuen Safari Browser (7.0) ausgerollt. Ich habe unsere Web-App unter Safari 7/Mac OS X 10.9 getestet, nur um festzustellen, dass Safari 7 (wahrscheinlich?) Den Zugriff auf lokale Dateien vom Java-Applet aus blockiert.

Obwohl das Applet (mit gültigem Thawte-Zertifikat signiert und mit allen für Java 7u45 spezifischen Sicherheitsanforderungen) im uneingeschränkten Modus mit vollem Zugriff auf lokales Dateisystem ausgeführt wird (Java-Sicherheitsabfrage sagt dies), versucht es auf das lokale Dateisystem zuzugreifen Datei, die es FileNotFoundException fängt:

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) 

auch wenn Java-Datei öffnen-Dialog aus dem Applet zu öffnen, zeigt es keine Dateien und Ordner in der Ordnerauswahl keine Symbole hat (in der Regel sollten sie sie haben). Wenn Sie zurück zum Stammordner navigieren, können Sie Ordner auf oberster Ebene (bin, cores, dev, home usw.) sehen, aber Sie können nicht zu ihnen navigieren.

Das Applet hat Zugriff auf lokale Dateien mit dem neuesten Firefox 24 für Mac, auf dem gleichen Computer (Java 7u45, Mac OS X 10.9). Das Gleiche gilt für Safari 6 und Mac OS X 10.8.5, ganz zu schweigen von Linux- und Windows-Rechnern in verschiedenen Konfigurationen: keine Probleme beim Zugriff auf lokale Dateien.

alle oben zu haben, muss ich feststellen, dass wir in das Problem spezifisch für Safari ran 7.

Haben Sie zu diesem Thema irgendwelche Ideen? Alle Gedanken werden sehr geschätzt.

Cheers, Yury

EDIT (Antwort): In Safari 7 eine neue Sicherheitseinstellung ist: Safe/Unsafe-Modus (ich denke, es ist für Java-Plug-in nur). Sie können zulassen, dass das Java-Plugin im unsicheren Modus entweder für einzelne Websites oder für alle Websites funktioniert. Im unsicheren Modus haben die Applets uneingeschränkten Zugriff auf das lokale Dateisystem.

Es scheint, dass diese Sicherheitseinstellung über die eigenen Sicherheitseinstellungen von Java hinausgeht (eingeschränkter/uneingeschränkter Zugriff).

Diese Einstellung ist über die Safari-Einstellungen/Registerkarte Sicherheit/Internet-Plugins verfügbar: Verwalten Sie die Website-Einstellungen (wählen Sie dann Java-Plugin).

Also wenn ich bereits meine eigene ursprüngliche Frage beantwortet habe, würde ich es lieber anders formulieren: Ist es möglich, den unsicheren Modus zu setzen oder den abgesicherten Modus für eine bestimmte Website/URL zu überschreiben, ohne den Benutzer zu bitten, diese Sicherheitsvoreinstellung einzustellen? Vielleicht würde etwas wie Apple Entwicklerzertifikat helfen?

Danke nochmal!

+0

Awesome, Ihr Kommentar bearbeiten es für mich fixiert. Danke, dass du die Beinarbeit gemacht hast. –

Antwort

4

Ich hatte ein ähnliches Problem mit einer anderen Java-App heute. Ich denke, du musst deine App vielleicht zum "Zulassen der Apps unten ... hinzufügen"."-Liste in diesem Dialog (System Prefs -> Security & Privacy -> Accessibility):

enter image description here

+1

Danke, das ist eine gute Idee, wird definitiv so aussehen. Übrigens liegt der Grund in meinem Fall in der neuen Sicherheitseinstellung von Safari 7 (ich habe meine ursprüngliche Frage mit weiteren Details aktualisiert). Aber hoffentlich könnte diese Einstellung überschrieben werden, ohne dass der Benutzer diese Sicherheitseinstellung manuell ändern muss. – JetLizard

+0

OK - Ich denke, ich habe die Frage leicht missverstanden, aber hoffentlich wird die Information in Zukunft für jemand anderen nützlich sein. –

+1

Ähnliches Problem bei Safari 6.1.1 unter OSX 10.8.5. In diesem Fall wird exec() ohne die Einstellung "unsafe mode" nicht ausgeführt. Vielen Dank für die Veröffentlichung! –

2

Für Safari 11:

  1. zu Safari Preferences- gehen> Webseiten-> Plug-Ins, und wählen Sie Java
  2. auf der rechten Seite Seite können Sie die Liste von "Websites zulassen, dieses Plug-in mit Einstellungen darunter zu verwenden"
  3. jetzt wählen Sie die Website
  4. drücken Sie und Halten Sie die Optionstaste gedrückt und klicken Sie dann auf die drei Optionen (Fragen, Aus, Ein). Sie werden die zusätzliche Option "Im abgesicherten Modus ausführen" sehen - deaktivieren Sie diese Option.

enter image description here