Bewachter Sandkasten: So funktioniert das Java-Sicherheitsmodell

Die Core Java 2 Security Architecture als Teil der Java-Plattform enthält unter anderem den Bytecode Verifier, Class Loader, Security Manager, Access Controller, Vorrichtungen für die Zugriffsrechte, Tools zur Policy-Beschreibung. Um ihr Ineinandergreifen zu illustrieren, folgt ein Beispiel für die Ausführung des Java-Codes in Komponenten der Core Java 2 Security Architecture.

Der Bytecode Verifier überprüft zunächst, ob der Java-Code der Java Language Specification entspricht. Dazu analysiert er erst den Bytecode-Ablauf und danach eventuelle Verweise auf andere Klassen. Wenn also eine Klasse auf eine Methode einer anderen Klasse zugreift, überprüft der Bytecode Verifier, ob diese als „public“ deklariert ist. Der Bytecode Verifier überprüft in der Regel, ob der Bytecode mit der Sequenz 0xCAFEBABE beginnt, ob verlorene Bytes vorhanden sind, ob final-Klassen fälschlicherweise über Subklassen verfügen, welche Arten von Methodenargumenten vorliegen und so weiter.

Ist alles in Ordnung, übersetzt der Class Loader den Bytecode in Java-Klassen, die daraufhin von der JVM ausgeführt werden. Class Loaders stellen auch sicher, dass nicht vertrauenswürdiger Code andere Java-Programme nicht beeinträchtigt. Es lassen sich verschiedene Policies definieren, die anzeigen, ob eine bestimmte Klasse geladen werden muss. Über den Class Loader und die Java-Standardklassen kann durch ein Entscheidungsrecht für den Security Manager auch festgelegt werden, ob eine Klasse auf bestimmte Systemressourcen zugreifen darf oder nicht.

Der Security Manager ist eine spezielle, vom Entwickler implementierbare Klasse. Sie zeigt an, ob eine Klasse auf eine bestimmte Ressource zugreifen darf (beispielsweise Dateizugriff oder Netzwerkverbindung). Für diese Entscheidung analysiert der Security Manager die Quelle der Anforderung. Bei Ablehnung des Zugriffs wird eine java.lang.SecurityException ausgelöst, ansonsten wird der Aufruf regulär abgewickelt. (Die Einrichtung eines spezifischen Security Manager wird ein zukünftiger Artikel zeigen.)

Mehr Flexibilität in einer Anwendung lässt sich auch durch einen anderen speziellen Mechanismus namens Access Controller erreichen. Die Java-Plattform verfügt über weitere grundlegende Sicherheitsfunktionen wie automatische Speicherverwaltung und starke Datentypisierung. Das ergibt einen robusteren Code und verringert die Anzahl der Speicherfehler und Anfälligkeiten. Die Kontrolle der Zugriffsrechte ist die wichtigste Verbesserung im Java 2-Sicherheitssystem. Das Package java.security enthält die notwendigen Klassen und Schnittstellen für die Core Java 2 Security Architecture.

Themenseiten: Anwendungsentwicklung, Software, Sun Microsystems

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Bewachter Sandkasten: So funktioniert das Java-Sicherheitsmodell

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *