Sicherheit in der Java-Sandbox-Modell
Seite 1 von 3
Seit seiner Einführung hat sich der Java-Technologie eine wichtige Rolle in Fragen der Sicherheit gegeben. Obwohl mit gemischten Ergebnissen haben die Designer versucht, die Plattform für Sicherheits-Systeme direkt in Sprache umgesetzt, für Entwickler verfügbar sind.
In einem kontinuierlichen Prozess der Evolution und der Verfeinerung der JVM hat sich zu einem der wichtigsten Infrastrukturen für den Stand-alone-, Web, Mobile und mehr, in diesem Artikel werden wir über die Entwicklung der Sicherheits-Modell konzentrieren, die gemeinhin als eine Sandbox, kommentierte die Design-Fehler und der aktuelle Status.
Voraussetzungen
Dieser Artikel ist für jeden geeignet, egal ob sie Java-Programmierer, die völlig fastet Leser des Themas erlebt. Einige Überlegungen wird mehr verständlich für diejenigen, die bereits über einige Erfahrung mit dieser Sprache, jedoch ist die Lektüre dieses Papier eignet sich für jeden Leser.
Der Sandkasten
Das ursprüngliche Modell
Das ursprüngliche Modell, wie eine Sandbox bekannt ist, wurde entwickelt, um potenziell bösartigen Code in einem isolierten und stark restriktive beschränken. Java, seit ihrer Geburt, war stark ausgerichtet auf das Netzwerk und diese Betrachtung führte zu einer Ausführung Modell, in dem der Code direkt von der fernen heruntergeladen wurde zu entwickeln, Aussetzen der Client wesentlicher Themen.
In seiner ersten Implementierung ist in der Abbildung schematisch dargestellt, die Sandbox nur grob zwischen lokalen und Remote-Code-Code zu unterscheiden: die erste zu genießen vollen Zugriff auf alle Ressourcen auf "kritische" System, wie zum Beispiel Ihre Dateisysteme und verschiedene Geräte, die Remotecodeausführung Im Gegenteil, hatte Zugang zu Ressourcen, von der gleichen Sandbox vermittelt begrenzt: Applets, inzwischen weitgehend von der Web-Ansicht verschwunden, ich war das bekannteste Beispiel.

Dieses Modell umfasst eine Reihe von Sicherheitsmechanismen auf verschiedenen Ebenen.
Zunächst einmal ist Java typsicher, dh es gibt eine explizite Beziehung zwischen einer Regelgröße und seinen Typ (Integer, Fließkomma, String, etc. ..).
Diejenigen, die in Sprachen und niedrigen / mittleren Ebene wie C programmiert haben und C + + wissen, wie viel Mühe kann diese Prüfung zu vermeiden: dass die Menge der impliziten Konvertierungen zwischen Typen wie Ganzzahlen oder boolesche Operatoren nichtig Verweise auf andere Verweise, die charakteristisch sind diese Sprachen zur gleichen Zeit die Hauptquelle für Fehler in der Programmierung werden, gleichermaßen für Anfänger und Experten verpflichtet.
Um die Chancen, dass die Entwickler compiessero Fehler, die Designer bei Sun einige Aspekte bisher nur in Nischen-oder Universitätsebene Sprachen wie gefunden eingeführt, minimieren zum Beispiel die automatische Speicherverwaltung (Garbage Collection) und Kontrollen zur Laufzeit Access Memory (Zeiger, Array-Elemente, etc ...).
Die zweite Schutzstufe wird vom Compiler und Laufzeit-Garantie, von der virtuellen Maschine. Dies gewährleistet, dass der Bytecode, der Assembler der Java-VM ausgeführt wird mit der entsprechenden ausgeführt werden darf. Insbesondere definieren zwei Hauptkomponenten, dem ClassLoader und SecurityManager, einen lokalen Namen Platz, um Interferenzen zwischen verschiedenen Instanzen der VM zu vermeiden und zu verwalten Zugriffskontrollen auf kritische Ressourcen.
JDK 1.1 - Code unterzeichnet
Das vorgestellte Modell ist sehr flexibel in der ersten Aktualisierung des JDK (Version 1.1) wurde das Konzept der vertrauenswürdigen Code auf Remote-Anwendungen, durch eine elektronische Unterschrift begleitet, wenn vom Kunden genehmigt erlauben, Zugriff auf Systemressourcen. Die Lösung, die schematisch in der Abbildung unten dargestellt, ist wenig mehr als ein Hack der vorherigen Architektur und erfordern daher eine komplette Neufassung in den nächsten Releases.







