Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Applet File security

11 views
Skip to first unread message

Chris Seidel

unread,
Jan 19, 2013, 2:46:47 PM1/19/13
to
Hallo,

ich habe ein Applet welches signiert ist. Das verarbeitet Bilder. Es kann
Bilder aus dem Dateisystem anzeigen (JFileChooser) oder von einer
Twain-Quelle holen und dann im user.home speichern.

Rufe ich aber im Applet eine Function via Javascript auf, welche versucht
auf Dateien zuzugreifen (lesen oder schreiben), gibt es ne Exception:

java.security.AccessControlException: access denied
("java.io.FilePermission" "C:\Documents and Settings\..." "write")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)

Werden durch Javascript gestartete Methoden irgendwie anders behandelt als
welche, die durch das Applet GUI gestartet werden?

Danke

Patrick Roemer

unread,
Jan 19, 2013, 9:24:42 PM1/19/13
to
Responding to Chris Seidel:

> Rufe ich aber im Applet eine Function via Javascript auf, welche versucht
> auf Dateien zuzugreifen (lesen oder schreiben), gibt es ne Exception:
>
> java.security.AccessControlException: access denied
> ("java.io.FilePermission" "C:\Documents and Settings\..." "write")
> at java.security.AccessControlContext.checkPermission(Unknown Source)
> at java.security.AccessController.checkPermission(Unknown Source)
>
> Werden durch Javascript gestartete Methoden irgendwie anders behandelt als
> welche, die durch das Applet GUI gestartet werden?

Es sind dann Klassen fuer die Java/Javascript-Verbindung auf dem
Callstack. Die kommen aus einer anderen CodeSource als das Applet, haben
somit die Permission nicht, und damit ist der Zugriff nicht erlaubt.

http://docs.oracle.com/javase/7/docs/technotes/guides/security/spec/security-spec.doc4.html#24646

Du koenntest den Zugriff im Applet innerhalb eines
AccessController#doPrivileged() ausfuehren.

Viele Gruesse,
Patrick

Chris Seidel

unread,
Jan 20, 2013, 7:37:49 AM1/20/13
to
On Sun, 20 Jan 2013 03:24:42 +0100, Patrick Roemer
<sang...@netcologne.de> wrote:

> Du koenntest den Zugriff im Applet innerhalb eines
> AccessController#doPrivileged() ausfuehren.

Das klappt.
Was ist der Sinn des Standardverhaltens, wenn ich es doch so ausschalten
kann?

Patrick Roemer

unread,
Jan 20, 2013, 8:17:06 AM1/20/13
to
Responding to Chris Seidel:
Standardverhalten: "Ich habe das Recht, diese privilegierte Aktion
durchzufuehren, aber nur, wenn ich in einem Kontext aufgerufen werde,
der dieses Recht hat."

Privileged: "Ich habe das Recht, diese privilegierte Aktion auszufuehren
und weiss, dass das sicher ist, egal, in welchem Kontext ich aufgerufen
werde." Ein bisschen so wie das suid-Bit. Sollte nur mit Bedacht und
sehr restriktiv eingesetzt werden (und der Aufruf von #doPrivileged()
selber wird sicherlich wiederum ueber Permissions eingeschraenkt sein).

Viele Gruesse,
Patrick

Chris Seidel

unread,
Jan 20, 2013, 9:26:06 AM1/20/13
to
OK, danke!
0 new messages