[Logo der Universität Bayreuth]
Universität Bayreuth

Mathematisches
Institut



 Einleitung

 Erste Schritte

 Mail und News

 Drucken

 KDE

 LaTeX/TeX

 Linksammlung

 Linuxtools

 Netzwerk

 Programmieren

 Windows

 X Window

 Anträge

 Kontakt

Java <-

Nutzung des Policytools

Hier wird das Tool "policytool" anhand von Beispielen beschrieben. Es gehört zum Standardumfang vom J2SDK und erlaubt es, dem Anwender, eigene Richtlinien zum Umgang mit Sicherheitsrestriktionen von Java (insbesondere bei Applets in Webbrowsern, aber auch im Appletviewer) zu definieren. Diese können die ansonsten äußerst restriktiven Sicherheitseinstellungen von Java lockern.

Warnung:
Beachten Sie, dass Sie damit u.U. Sicherheitsprobleme erzeugen können, wenn Sie die Richtlinien zu großzügig auslegen.

Umgehung von Sicherheitsrestriktionen für Applets mit Hilfe von "policytool"

Zunächst starten wir das Tool mit dem Kommando policytool, wobei natürlich auf Kleinschreibung zu achten ist.
Nun sehen Sie in etwa folgendes Bild:

Die Meldung über die nicht gefundene Richtliniendatei ist nicht verwunderlich, da ja (vermutlich) vom Nutzer noch keine derartige Datei angelegt worden ist. Wir beenden das Fenster durch Betätigen des OK-Buttons.

Anlegen der Richtliniendatei

  • Button "Richtlinieneintrag hinzufügen" anklicken

    Es erscheint das hier zu sehende Fenster mit dem Titel "Richtlinieneintrag". Bei "Code-Basis" gibt man nun einfach die Codebase der Applikation/des Applets an, für welche/s man eine neue Richtlinie festlegen möchte. Füllt man dieses Feld nicht aus, gilt die neue Richtlinie per Default für alle möglichen Applikationen/Applets (was normalerweise aus Sicherheitsaspekten nicht sinnvoll ist). Auf das "Signiert von"-Textfeld sowie auf Principals soll hier nicht eingegangen werden.
    Nun auf "Berechtigung hinzufügen" klicken, worauf sich ein weiteres Fenster mit dem Titel "Berechtigungen" öffnet. Die oberste Combobox erlaubt es, die Art der Berechtigung zu wählen, die neu erstellt werden soll (und damit freigeschalten wird, so dass diese keine neue Sicherheitsverletzung darstellt). Über die zweite Combobox kann man den Zielnamen festlegen (z.B. ein Dateiname, der gelesen oder beschrieben werden soll, ein Hostname, der aufgelöst werden soll, ...). Schliesslich kann man über die Aktionen Box noch angeben, welche Aktionen für die Berechtigung auf das angegebene Ziel durchführbar sein sollen (z.B. Datei lesen oder schreiben, Hostname auflösen, ...).
    Abschließend bestätigen wir mit "OK", worauf sich das Berechtigungen-Fenster schließt. Jetzt noch eine Bestätigung im Richtlinien-Fenster durch Klick auf "Fertig" und die neue Regel ist erstellt.

    Sofern vor den gerade vollzogenen Schritten noch keine "Policy"-Datei vorhanden war, müssen wir nun noch eine solche anlegen und zwar, indem wir das Datei-Menü "Speichern Unter" ausführen. Im sich öffnenden Datei-Dialog gehen wir unter

    • Windows: In das Verzeichnis "C:\Dokumente und Einstellungen\<Nutzername>\"
    • Linux: In das Verzeichnis "/home/<Nutzername>/"

    und legen in beiden Fällen die Datei ".java.policy" an (führenden Punkt nicht vergessen!).
    Jetzt mit "Speichern" bestätigen. Die Datei existiert nun und kann auch für weitere Einträge herangezogen werden.

Beispiel für die Erstellung einer Regel, die einem Applet Zugriff auf einen Teil des lokalen Dateisystems verschafft

Wir erzeugen nun eine "Policy", um einem Applet zu erlauben, einen lesenden/schreibenden Dateizugriff auf die Datei "out.txt" auszuführen.

  • Zunächst legen wir die Datei "out.txt" unter "C:\Dokumente und Einstellungen\<Nutzername>\Eigene Dateien\" bzw. "/home/<Nutzername>/" an.
 (a) Version ohne SecurityException Behandlung
  • Jetzt laden wir ein Applet-File herunter, welches keine explizite SecurityException-Behandlung vornimmt. Download
  • Das dazugehörige HTML-File gibt es unter folgendem Link. Download
  • Bei der Ausfürung dieses Applets im Appletviewer erhalten wir eine dieser Meldung ähnlichen Fehlerausgabe bei dem Versuch schreibend/lesend auf die Datei out.txt zuzugreifen.
 (b) Version mit SecurityException Behandlung
  • Applet mit SecurityException-Behandlung herunterladen und übersetzen.
  • HTML-File herunterladen.
  • Applet starten, "Speichern" und "Lese ein" ausprobieren -> "Sicherheitsverletzung"
    Dieses Applet besitzt die Besonderheit, dass es selbst die "SecurityException" abfängt. Normalerweise tut man dies nicht selbst, so dass das Java-Applet an dieser Stelle abbrechen würde mit der "SecurityException".
 Hier geht es wieder allgemein weiter ... 
  • Nun starten wir policytool und folgen den oben genannten Schritten bis wir im Unterfenster "Berechtigungen" angelangt sind.
  • Wir wählen die Berechtigungsart FilePermission, den Zielnamen "C:\Dokumente und Einstellungen\<Nutzername>\Eigene Dateien\out.txt" unter Windows bzw. "/home/<Nutzername>/out.txt" unter Linux sowie die Aktionen write, read, delete, execute.
    Vergleiche mit diesem Screenshot.
    Jetzt mit "OK" bestätigen.
    Nun gibt es zwei Möglichkeiten in Bezug auf Code-Base:

    1. Wir setzen in das Code-Base-Feld den Pfad ein, in dem unser Applet liegt und gewähren diesem damit exklusiven Zugriff auf "out.txt" (siehe Screenshot).
    2. "Code-Basis" und "Signiert von" könnten wir für dieses Beispiel auch unverändert (also leer) lassen. Andernfalls (siehe erste Möglichkeit) müssten wir den URL angeben, unter dem das auszuführende Applet zu finden ist. Dieser Weg (alles leer zu lassen) ist zwar der etwas bequemere, stellt dafür aber auch ein gewisses Sicherheitsrisiko dar, da nun jedes beliebige Applet vollen Zugriff auf diese Datei erhält.

    "Fertig" führt uns wieder zurück zum Hauptfenster von "policytool".
    Jetzt noch "Speichern" und das Applet müsste sich nun ausführen lassen.
  • Wenn wir jetzt das Applet nochmals starten (Browser sollte neugestartet werden), sollten die Aktionen des Applets klappen und Sie sollten dieses Fenster beim Schreiben bzw. jenes Fenster beim Lesen sehen.

top top

Verbesserungsvorschläge, Fragen und Anregungen an
Robert Baier ([e-mail-Adresse von Robert Baier])
© 2004 Robert Baier, Manuel Doss
[Seitenzähler] Last modified: 22.07.2015