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:
-
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).
-
"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.
|