JAVA-Applet im EDV-TIPP

 

(EDV-TIPP vom 16.09.01)

 

Hin und wieder erreichen mich E-Mails von EDV-TIPP-Lesern, die enttäuscht sind, warum sie das Inhaltsverzeichnis

zum Navigieren innerhalb der EDV-TIPP-Sammlung z.B. auf bestimmten Rechner sehen können und auf anderen Rechnern wieder nicht.

Ja, die Frage ist nicht so leicht zu beantworten. Ich will jedoch versuchen, die Hintergründe für evtl. Darstellungsprobleme zu erklären.

Das oben dargestellte Inhaltsverzeichnis basiert auf einem JAVA-Applet.

Mit der Frage, was JAVA ist, haben wir uns ja schon einmal im Rahmen eines sehr kurzen EDV-TIPP beschäftigt.

Java ist eine von der Firma SUN Anfang der 90er Jahre entwickelte plattformunabhängige Programmiersprache, die viele Eigenschaften von C++ übernommen hat (z.B. die Objektorientierung). Sie ist jedoch wesentlich eingeschränkter in ihren Möglichkeiten.

Java geht offensichtlich auf die Sprache Oak (Object Application Kernel) zurück, die 1991 von Bill Joy, James Gosling und Mike Sheridan entwickelt wurde. 

Ziel war es, eine einfache und plattformunabhängige Programmiersprache zu schaffen, mit der nicht nur normale Computer wie Unix-Workstations, PCs und Apple-Computer programmiert werden können, sondern die auch in Haushalts- oder Industriegeräten mit integriertem Mikro-Computer. Als typische Beispiele seien hier Waschmaschinen, Videorekorder, Autos und Verkehrsleitsysteme, Kreditkarten und Sicherheitssysteme und vor allem auch TV-Settop-Boxen für "intelligente" Fernsehapparate genannt.

So richtig in die Öffentlichkeit kam Java aber erst seit Mitte 1995 in Verbindung mit Web-Browsern (HotJava und Netscape Communications) und entsprechenden Internet-Anwendungen.

Java ist in den USA übrigens oft die umgangssprachliche Bezeichnung für Kaffee (kommt vermutlich von Java (Jawa), kleinste der Großen Sundainseln, die zu Indonesien gehören, deren Exportprodukt der Kaffee ist) - und so wurde kurzerhand das "Grundnahrungsmittel" der Programmierer zum Symbol für die neue Programmiersprache erhoben: die "dampfende Kaffeetasse".

In den letzten Monaten ist Java sicher auch noch mehr durch einen drei Jahre dauernden Prozess zwischen Sun und Microsoft in das Licht der Öffentlichkeit gerückt.

Microsoft musste danach $20 Millionen Dollar wegen Urheberrechtsverletzung bezahlen. Außerdem darf Microsoft die Handelsmarke "Java kompatibel" nicht mehr verwenden.

Während die Java-Freunde frohlockten und ihr Konzept "Write Once, Run Anywhere" nun abgesichert ist, scheint Microsoft bei Windows XP wieder einen neuen Weg zu gehen.

Der neue Internet-Explorer wird offensichtlich keine direkte Java-Unterstützung mehr bieten. Zumindest wird auf der CD kein entsprechendes Tool mehr mitgeliefert. Die alte Java Virtual Machine (auf Basis von Suns JDK 1.1) kann jedoch beim ersten Besuch einer Internetseite mit Java-Applet nachgeladen werden. 

Mehr als 400 Firmen und Organisationen, darunter  Oracle, IBM, BEA, Cisco, Apache, SAP, Sony, Apple, Palm, Motorola, Nokia, HP und Philips unterstützen mittlerweile Java.

Sun plant deshalb meines Wissens nach eine neue "Microsoft Virtual Machine" als Teil der neuen Java 2 Plattform, (Standard Edition release 1.3.1)

Damit ist sicher auch für Windows XP - User gesichert, dass sie die mehr als 6 Millionen Webseiten auf Java-Basis weiter sehen können.

Was verbirgt sich denn nun hinter JAVA?


In der Java-Programmierung wird grundsätzlich unterschieden zwischen:

  • Applikationen und
  • Applets

Bei Applikationen handelt es sich um selbständige Programme, wie man sie aus anderen Sprachen kennt. Sie werden nach dem Kompilieren mit dem Java-Interpreter direkt ausgeführt und unterliegen keinerlei Sicherheitseinschränkungen.

Java-Applets hingegen werden innerhalb einer Web-Page dargestellt und unter der Kontrolle eines Web-Browsers ausgeführt. 

Sie werden meist über das Internet von einem Server geladen, und spezielle Sicherungen innerhalb des Web-Browser sorgen dafür, dass sie keine unerwünschten Wirkungen auf den Client-Rechner haben können. 

So können Applets z.B. in der Regel nicht auf lokale Files, Systemkomponenten oder Programme zugreifen und auch nicht auf Internet-Verbindungen außer zu dem einen Server, von dem sie geladen wurden.


Genau ein solches Java-Applet ist auch die Basis für das Inhaltsverzeichnis innerhalb des EDV-TIPP. 

Warum nun so ein Java-Applet und keine echte "Link-Struktur"?

Eine Struktur mit traditionellen Links hat in meinen Augen den Nachteil, dass sie nicht alle verfügbaren Seiten der Website in einer Übersicht zeigt. Die Eingangsseite kann zwar noch die Obergruppen der jeweiligen Themen anzeigen, doch wenn man zu einem Thema verzweigen will, muss man in der Regel den kpl. Frameset oder eine Seite mit allen notwendigen Navigationselementen neu laden. Das kostet Zeit und damit Geld (für die Datenübertragung) und sieht auch nicht so schön aus, da sie ständig einen kpl. neuen Seitenaufbau haben.

Aus diesem Grund habe ich mich in einem sehr frühen Stadium (Mitte 1997) entschieden, den EDV-TIPP mittels eines übersichtlichen Verzeichnisbaumes darzustellen. Basis wurde dann sehr schnell das "Java BSCOutline Applet" von Simon Daykin.

Das BSCOutline-Applet ist zu 100% pures Java und heute in der Version 5.0 verfügbar.

Der wesentliche Unterschied zwischen Java und anderen Programmiersprachen ist, dass Java-Programme in der Regel zunächst nicht in hardwareabhängigen Maschinencode übersetzt werden oder als Quelltext interpretiert werden, sondern in einen plattformunabhängigen sogenannten Bytecode


Für jede Hardware gibt es ein spezielles Programm (die Java Virtual Machine, JVM), die in der Lage ist, diesen Bytecode - also die vorkompilierten Java-Programme, sogenannte Applets, auszuführen. 

Vor der Ausführung durch die JVM durchläuft der Java-Bytecode verschiedene Sicherheitsstufen:

Die erste dieser Stufen wird von dem sogenannten Bytecode-Verifer durchgeführt. Dieser überprüft, ob das Applet vollständig geladen wurde und nicht gegen elementare Grundregeln, die jedes Java-Applet erfüllen muss, verstößt. Hier wird z.B. geprüft, ob allen Variablen gültige Werte übergeben wurden.

In der nächsten Sicherheitsstufe sorgt der Class-Loader dafür, dass die Menge der Schnittstellen eingeschränkt ist, die von einem Applet auf dem lokalen System verwendet werden können. Zusätzlich übernimmt der Class-Loader die Aufgabe, dafür zu sorgen, dass keine ungeprüften Klassen eingefügt und vorhandene Klassen nur in einem genau definierten Rahmen überschrieben werden können.

Die dritte Sicherheitsstufe wird bei der Ausführung einer Klasse durch den sogenannten Security-Manager bereitgestellt. Er prüft, ob ein Zugriff auf sicherheitskritische Ressourcen des Rechners, auf dem das Applet abläuft, gestattet ist oder nicht. Der Security-Manager unterscheidet bei der Prüfung auch streng nach der Herkunft der Klasse. Lokale Klassen aus dem Intranet z.B. können höhere Rechte haben als Klassen, die aus dem Internet geladen worden sind. 

Aufgrund dieser Eigenschaften wird das Sicherheitskonzept auch als "Sandkasten" oder "Sandbox" bezeichnet.

So können Applets in der Regel:

  • nicht auf lokale Files auf der Festplatte des Users zugreifen,
  • keine Befehle oder Programme auf dem Client starten,
  • keine Internet-Verbindungen aufbauen, außer zu dem Server, von dem das Applet selbst geladen wurde.

Bei zertifizierten Applets (signed Applets) kann der Benutzer, wenn er sie für vertrauenswürdig hält, auch Ausnahmen von den strengen Sicherheitsregeln zulassen (vergl. JDK 1.2). Er kann z.B. vereinbaren, dass ein bestimmtes Applet auf ein bestimmtes File oder ein bestimmtes Subdirectory seiner Harddisk zugreifen darf (nur lesend, oder lesend und schreibend).


Als Alternativen wären nun auch Programmierungen mit ActiveX oder Javascript denkbar gewesen.

ActiveX ist eine Technologie, die beim Laden einer Webseite Programme auf Ihren Rechner lädt und diese dann ausführt. Diese Programme haben im Gegensatz zu Java-Programmen einen uneingeschränkten Zugriff auf Ihren PC. Damit können weitere Programme auf Ihren Rechner kopiert und auch Dateien auf Ihrer Festplatte modifiziert werden. Bösartige Programme können damit Schutzmaßnahmen Ihrer Browser-Software unterlaufen. Aus Gründen der Sicherheit lehne ich eine solche Programmierung für Webseiten zum momentanen Zeitpunkt ab.

Javascript hingegen ist eine Technik, die es ermöglicht, dass in einer HTML-Seite kleine Programmstücke enthalten sind, die nach dem Laden der Web-Seite ausgeführt werden. Aufgrund von Implementierungsfehlern in den Browser können bestimmte Eigenschaften von Javascript missbraucht werden, um Manipulationen an Ihrer Websoftware vorzunehmen. 

Ich selbst nutze Javascript nur sehr sparsam (und für die Öffentlichkeit dokumentiert; vergl. "Browser-selection with JavaScript") bei den ersten Index-Seiten des EDV-TIPP, um zu ergründen, welchen Browser Sie nutzen, um dann auf evtl. Probleme hinzuweisen. Haben Sie Javascript aber im Browser abgeschaltet, so können Sie dennoch auf den EDV-TIPP zugreifen.


Das Sicherheitskonzept von Java-Applets wirft nun die Frage auf, ob Java denn nun sicher ist oder nicht. Das Fazit lautet meiner Meinung: Java hat eine deutlich höhere Sicherheit als ActiveX. Darüber hinaus hat Sun sich sehr bemüht, einige sehr fortschrittliche Sicherheitsmerkmale in Java zu integrieren. 

Java-Applets werden deshalb auch von Banken und Sparkassen als Frontendprogramm (InternetBanking-Applet) eingesetzt, um sicherheitsrelevante Daten zwischen dem Kunden und der Bank auszutauschen.

Nun sind die Rechte des Security-Manager (z.B. im Netscape Navigator oder im Microsoft Internet Explorer) leider nicht einheitlich geregelt und so kann es aufgrund von Fehlern in der Programmierung oder der Auslegung der Vorschriften immer wieder zu Sicherheitsproblemen kommen.

Experten empfehlen deshalb den Usern anstelle von irgendwelchen "Java Virtual Machinen" (JVM) nur die JVM von Sun zu nutzen. Diese ist als Plug-in von Sun verfügbar und leicht zu installieren. Diese "Virtual Machine" liegt im Quellcode vor, so dass eine Überprüfung der sicherheitsrelevanten Teile vorgenommen werden kann.


Bei der Nutzung des EDV-TIPP-Applet kann es bei einigen Browsern (sofern Sie z.B. die Standard-JVM von Microsoft nutzen) nun z.B. zu dem Fehler "AppletSecurityException"-Error kommen.

Dies ist kein typischer Fehler der nur das von mir genutzte Applet betrifft, sondern ein genereller Fehler des Internet Explorers. Laden Sie sich im Zweifel ein Update bei Microsoft der JVM herunter. Der Fehler ist damit behoben.

Alternativ können Sie auch das BSCOutline.class-File, also das eigentliche Applet, von Hand auf Ihren Rechner laden und es in das Verzeichnis C:\WINDOWS\JAVA\CLASSES kopieren.

Dieses "work around" hat darüber hinaus auch noch den Vorteil, dass das Applet nicht mehr aus dem Internet geladen werden muss. Sie haben damit den Menübaum schneller aufgebaut, als wenn Sie das Applet (bei jeder Sitzung) immer wieder erneut laden müssen.


Um für den Normalanwender aber auch einen Geschwindigkeitsvorteil zu haben, stelle ich mit der neuen Version das Applet auch komprimiert als CAB-Datei zur Verfügung. 

Über entsprechende Befehle übernimmt Ihr MS-Browser zukünftig automatisch das komprimierte Applet (CLASS-File) und ist damit einen Deut schneller.

Sie als User brauchen sich allerdings nicht um das Entpacken zu kümmern. Das macht Ihr Browser ganz von selbst blitzschnell im Hintergrund.


Ein weiteres Problem entsteht durch Firewalls bzw. Proxys

Sie beschränken aus Sicherheitsgründen die Kommunikation zwischen einem firmeninternen Intranet oder einem einzelnen PC auf der einen Seite und dem Internet auf der anderen Seite.

Nun kann es sein, dass die beteiligten Administratoren einfach nicht in der Lage sind, ihr Netzwerk bzw. die Firewall angemessen zu konfigurieren. 

Es kann aber auch sein, dass Ihr Administrator ein erhöhtes Maß an Sicherheit für sein Intranet beschlossen hat.

Java-Applets gelangen erst einmal ungehindert durch Firewalls. Findige Köpfe kamen nun auf den Gedanken, dass bösartige Applets die Firewall-Sicherheit untergraben könnten. Sehen Sie dazu das Dokument mit dem Titel "Blocking Java Applets at the Firewall" von David M. Martin jr., Sivaramakrishnan Rajagopalan und Aviel D. Rubin unter http://www.cs.bu.edu/techreports/ 

Die Autoren demonstrierten darin nämlich eine Methode, mit der ein Java-Applet eine Firewall dazu bringen konnte, beliebige, normalerweise eingeschränkte Ports, für den Host des Applets zu öffnen. Mit anderen Worten konnte ein solches Applet die Basis-Funktion einer Firewall komplett umgehen.

Ich habe aus diesem Grund auch ein gewisses Maß an Verständnis für die erhöhten Sicherheitsanforderungen eines Unternehmens. 

Nun ist es aber offensichtlich nicht so einfach, ein Applet intelligent herauszufiltern und deshalb entscheiden sich einige Firewalls für die brutale Methode:

Ein Applet beginnt innerhalb einer Website meist mit etwa folgendem Code:

<applet code="myProgramm.class" width=nnn height=nnn>
<param name="xxx" value="yyy">
  HinweisText 
</applet>

Alles was zwischen den HTML-Tags <applet> und </applet> steht, wird nun von der Firewall einfach ausgefiltert. Evtl. Hinweistext z.B. mit einer alternativen URL (wie von mir vorgesehen) erscheint leider nicht auf dem PC des Anwenders.

Nun kann das Firewall-Programm ja von mir aus alle Zeilen mit entsprechenden "Tags" aus einer HTML-Seite löschen - es sollte aber zumindest dem Anwender einen Hinweis geben, dass das gewünschte Java-Applet von der Firewall abgeblockt worden ist.

Doch scheinen die meisten Systemadministratoren dazu nicht in der Lage zu sein oder keine Zeit für solche einfachen Hilfen zu haben.

Eine solche Filterung reicht jedoch in den meisten Fällen nicht aus. So können HTML-Seiten ja z.B. auch als Inhalt einer E-Mail übertragen werden. 

Intelligente E-Mail-Programme erkennen dies und starten automatisch einen Browser, der diese HTML-Seite anzeigen kann und dann natürlich auch das Java-Applet ausführt. 

Java erlaubt deshalb eine recht einfache Möglichkeit der Erkennung. Alle Java-Klassen-Dateien beginnen mit den Hexadezimalzahlen CA, FE, BA und BE. Dieses Merkmal kann ebenfalls zur Erkennung durch eine Firewall herangezogen werden.

Leider werden Java-Applets nicht durchgängig als Datei mit der Endung .class verschickt. Statt dessen können auch komprimierte Dateien eingesetzt werden, die z.B. die Endung .jar (Java-Archive) oder wie in meinem Fall .cab haben. Das bedeutet, dass ein Java-Filter auch alle von beliebigen Browsern unterstützten Komprimierungsverfahren kennen und berücksichtigen muss.


Nun haben wir, oder besser Sie, die hinter einer Firewall sitzen, ein Problem. Sie können den EDV-TIPP nicht in der gewohnten Weise sehen.

Was ist zu tun?

Ich könnte mein Applet zertifizieren lassen. Da die Zertifizierungsmechanismen der verschiedenen Browser unterschiedlich und nicht zueinander kompatibel sind, sind normalerweise zwei verschiedene Zertifizierungsverfahren notwendig. Der Aufwand und die Kosten sind nicht unerheblich.

Und ob Ihr Admin nun ein zertifiziertes Applet durchlässt ist auch noch fraglich. 

Da ich den EDV-TIPP als Hobby betreibe und dafür nicht unnötig Geld in die Hand nehmen möchte, bleibt Ihnen bzw. Ihrem Administrator, nur mir bzw. meinem Applet zu vertrauen - oder halt eben nicht zu vertrauen!

Wenn man dem Applet also nicht manuell erweiterte Rechte zubilligt, können lediglich Fehler in der Implementierung der Laufzeitumgebung des Browsers zu Zugriffen beispielsweise auf Dateien oder Netzwerkadressen führen.

Für die Zertifizierung von Applets innerhalb eines kleinen Benutzerkreises, wie z.B. innerhalb des Intranet einer Firma, braucht man keine weltweite Zertifizierung, sondern es genügt eine Gruppen- bzw. Firmen-interne Beglaubigung der Signatur durch eine persönlich bekannte vertrauenswürdige Person.

Sprechen Sie also im Zweifel einmal mit Ihrem Administrator. Vielleicht hat er ein Herz für Sie! Sollte Ihnen allerdings nach einem solchen Gespräch kein Zugriff auf ein so einfaches Applet wie in meinem EDV-TIPP möglich sein, so werden Ihnen zukünftig viele interessante Webseiten verborgen bleiben, denn immer mehr Unternehmen setzen auf die doch recht sichere Technik von Java-Applets. 

Eine Projektgruppe (DASIT; Datenschutz im Internet) hat sich z.B. gerade jüngst mit dem Thema des anonymen Einkaufens im Internet beschäftigt.

Das Ergebnis der 4 Millionen DM teuren Studie, die mit 40% vom Wirtschaftsministerium gefördert wurde, ist u.a. ein Java-Applet für Ihren PC, das mit einem Chipkartenleser zusammenarbeitet und Ihnen das anonyme Einkaufen im Internet ermöglichen soll.

Ob es nun Banken oder Sparkassen sind oder Unternehmen, die einfach nur Ihre Produkte mit solcher Technologie präsentieren. All diese Sachen werden Ihnen hinter Ihrem Firewall verborgen bleiben.

Doch Ihr Chef wird sicher sagen, dass Sie ja auch in Ihrem (bzw. seinem) Unternehmen arbeiten und nicht besondere Produkte (z.B. des Wettbewerbes) im Internet bestaunen, einkaufen oder gar den EDV-TIPP lesen sollen.

Um Ihnen dennoch den Zugriff auf den jeweiligen EDV-TIPP zu ermöglichen, bleibt Ihnen alternativ nur die Nutzung meiner frame- und appletlosen Indexseite für den allgemeinen EDV-TIPP und die DVD/SVCD-Indexseite für die EDV-TIPPs zum Thema DVD und SVCD.

 

Literaturhinweis :

 

 

 

Home zu "http://www.edv-tip.de"