Movatterモバイル変換


[0]ホーム

URL:


Rheinwerk Computing< openbook >Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einleitung
2 Webbrowser
3 JavaScript einbauen
4 Programmieren mit JavaScript
5 Datum
6 Zufall
7 Browserinformationen
8 Fenster
9 Formulare
10 Frames und Iframes
11 Grafiken
12 Cookies
13 Objekte und Arrays
14 Ereignisbehandlung
15 Fehlerbehandlung
16 DOM
17 DHTML und CSS
18 AJAX
19 XML
20 Web Services
21 AJAX-Frameworks
22 Plugins
23 Multimedia
24 Java
25 Serverseitige Technologien
26 JavaScript goes .NET
27 Code schützen
28 Top Secret: Passwortschutz
29 Signierte Skripte
30 JavaScript und Sicherheit
31 Navigation
32 Warenkorb
33 JavaScript-Bibliotheken
34 Referenz
35 Quellen im Web
36 Die Zukunft von JavaScript
Index
Ihre Meinung?

 <<   zurück
JavaScript und AJAX von Christian Wenz
Das umfassende Handbuch
Buch: JavaScript und AJAX

JavaScript und AJAX
839 S., mit DVD, 39,90 Euro
Rheinwerk Computing
ISBN 3-89842-859-1
gpKapitel29 Signierte Skripte
 gp29.1 Zusätzliche Rechte
  gp29.1.1 Allgemeines
  gp29.1.2 Surfüberwachung
  gp29.1.3 Besondere Fenster
 gp29.2 Signieren
  gp29.2.1 SignTool
  gp29.2.2 HTML-Code anpassen

Es gibt keine Sicherheit, nur verschiedene Grade derUnsicherheit.– Anton Neuhäusler

Kapitel29 Signierte Skripte

An einigen Stellen in diesem Buch war von den Sicherheitsmechanismen von JavaScript die Rede. Insbesondere ging es darum, dass man mit JavaScript keine sensiblen Daten auslesen kann. Sensibel bedeutet, dass es sich um ein potenzielles Sicherheitsrisiko handelt, wenn die Daten ausgelesen werden können. Beispielsweise kann man nicht auf die URL eines Dokuments in einem Unterframe zugreifen. Erstens geht es niemanden etwas an, wohin man surft (außer, man benutzt die Leitungen seines Arbeitgebers), und außerdem könnten so geheime URLs publik werden, beispielsweise von nicht gesicherten Intranet-Seiten.

In diesem Kapitel werden Verfahren vorgestellt, um diese zusätzlichen Rechte zu erhalten. Im Intranet-Einsatz kann das mitunter ganz nützlich sein; im World Wide Web ist das Vorgehen nicht empfehlenswert, denn selbstverständlich wird der Benutzer darauf hingewiesen, dass ein Skript zusätzliche Rechte fordert.

Wenn ein Skript besondere Rechte haben will, steht der Benutzer vor der schwierigen Entscheidung, ob er dem Skript diese Rechte überhaupt geben möchte. Man kann das Skript dannsignieren:Man erwirbt dazu ein Zertifikat bei einer unabhängigen Autorisierungsbehörde und kann dann seine Skripten mit seiner persönlichen Signatur versehen. Der Benutzer sieht dann, von wem das Skript kommt, und stimmt daraufhin eventuell eher zu (zumindest, wenn er den Ersteller des Skripts persönlich kennt). Aber dazu später mehr.

Das Sicherheitskonzept wurde beim Netscape Navigator 4 komplett neu erstellt; die folgenden Beispiele funktionieren also weder beim Internet Explorer noch bei älteren Netscape-Versionen. Sie sind aber vermutlich primär an aktuellen Mozilla-Browsern interessiert. Die gute Nachricht: Die Ansteuerung ist weitestgehend identisch. Allerdings werden die erweiterten Zugriffsrechte standardmäßig offensichtlich nur bei lokalen Dateien unterstützt.


Rheinwerk Computing

29.1 Zusätzliche Rechte downtop

Wie bereits in der Einleitung und in vorangegangenen Kapiteln erwähnt wurde, scheitern manche JavaScript-Aktionen an Sicherheitsvorkehrungen des JavaScript-Interpreters. Beispiele sind das Auslesen von Daten aus Dokumenten in einem anderen Frame, sofern diese Dokumente auf einem anderen Webserver liegen, oder das Erzeugen bestimmter Fenster (Sie erinnern sich vielleicht noch an die Auflistung in Kapitel 10).


Rheinwerk Computing

29.1.1 Allgemeines downtop

Die erweiterten Rechte werden anhand von Java-Klassen beantragt, die bei Netscape und Mozilla mitgeliefert werden. Die allgemeine Syntax lautet:

netscape.security.PrivilegeManager.enablePrivilege(Privileg)

MitPrivileg wird hier die Zeichenkette bezeichnet, die das Privileg angibt, das das Skript beantragt. Man unterscheidet zwischen Privilegien mit mittlerem Risiko und Privilegien mit hohem Risiko. In der folgenden Tabelle sehen Sie alle Privilegien mit mittlerem und hohem Risiko:


Tabelle 29.1    Privilegien mit mittlerem und hohem Risiko

PrivilegBeschreibung
UniversalBrowserReadLesezugriff auf sensible Daten, beispielsweise Dokumente von anderen Domains in einem Unterframe
UniversalPreferencesReadLesezugriff auf die persönlichen Einstellungen des Benutzers (inklusive E-Mail-Adresse, Mailserver-Benutzername etc.)
UniversalSendMailVersand von E-Mails vom Konto des Benutzers
UniversalBrowserAccessLese- und Schreibzugriff auf sensible Daten, beispielsweise auf Dokumente von anderen Domains in einem Unterframe; Erzeugung von besonderen Fenstern (etwa außerhalb des Bildschirms)
UniversalBrowserWriteErzeugung von besonderen Fenstern (etwa außerhalb des Bildschirms)
UniversalFileAccessLese- und Schreibzugriff auf Dateien auf dem Rechner des Benutzers
UniversalFileReadLesezugriff auf Dateien auf dem Rechner des Benutzers
UniversalFileWriteSchreibzugriff auf Dateien auf dem Rechner des Benutzers
UniversalPreferencesWriteSchreibzugriff auf die persönlichen Einstellungen des Benutzers

Sie sehen bereits, dass man mit diesen speziellen Rechten schlimme Dinge auf dem Rechner des Benutzers anstellen kann. Aber wie gesagt, der Benutzer muss erst einmal zustimmen, und die Warnmeldung ist mehr als deutlich.


Rheinwerk Computing

29.1.2 Surfüberwachung downtop

Im ersten Beispiel soll eine Surfüberwachung realisiert werden. Die Seite besteht aus zwei Frames. Während der Benutzer im unteren Frame nach Gutdünken surfen kann, wird im oberen Frame die URL des Dokuments angezeigt, das man im unteren Frame sieht. Normalerweise ist das ja nicht möglich, aber durch die entsprechenden Privilegien kein Problem.

Anhand der vorherigen Tabelle sehen Sie, dass ein Lesezugriff auf den Frame ausreicht, also das PrivilegUniversalBrowserRead.

Die Frameset-Datei sieht folgendermaßen aus:

<html><head><title>Surfüberwachung</title></head><frameset rows="100,*">   <frame src="watchdog.html" />   <frame src="http://www.galileo-press.de/" /></frameset></html>

Die Dateiwatchdog.html schließlich muss die URL des unteren Frames auslesen. MitsetInterval() wird die Adresse periodisch in ein<div>-Element geschrieben.

<html><head><title>Watchdog</title><script type="text/javascript">setInterval("dog()", 5000)function dog() {   netscape.security.PrivilegeManager.enablePrivilege(      "UniversalBrowserRead");   var adr = parent.frames[1].location.href;   document.getElementById("ausgabe").innerHTML = adr;}</script></head><body><h1>Aktuelle URL:</h1><div>---noch keine---</div></body></html>

Sobald Sie diese Seite im Browser laden (lokal, nicht über den Webserver!), erscheint die in Abbildung 2.1 gezeigte Abfrage.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 29.1    Sicherheitsabfrage

Sobald der Benutzer das bestätigt, wird die Seite geladen, und alles funktioniert wie geplant (siehe Abbildung 29.2).

Sollte der Benutzer die Sicherheitsabfrage nicht bestätigen, so erhält er auch keinen Lesezugriff auf den unteren Frame, sondern eine Fehlermeldung, die in Abbildung 29.3 zu sehen ist.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 29.2    Die Surfüberwachung im Einsatz

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 29.3    Die Fehlermeldung, die erscheint, wenn der Benutzer die zusätzlichen Rechte nicht gewährt


Rheinwerk Computing

29.1.3 Besondere Fenster toptop

Wie in den vorangegangenen Kapiteln bereits erwähnt wurde, gibt es einige Sachen, die man mit Fenstern anstellen kann, die nur mit signierten Skripten möglich sind. Dazu gehören Fenster, die weniger breit oder hoch sind als 100 Pixel oder die sich außerhalb des sichtbaren Bereichs des Bildschirms befinden. Hierzu wird – wie in der Tabelle weiter oben zu sehen ist – ein Privileg mit großem Risiko benötigt, entwederUniversalBrowserAccessoderUniversalBrowserWrite. Dabei istUniversalBrowserWritedas schwächere Privileg, also verwenden wir es hier. Wir probieren zwei sicherheitskritische Operationen aus:

gp Erstellen eines Fensters, das niedriger oder schmaler als 100 Pixel ist
gp Erstellen eines stets sichtbaren Fensters

Im folgenden HTML-Dokument befindet sich ein Formular mit zwei Schaltflächen. Jede dieser Schaltflächen ruft eine der beiden Operationen auf.

<html><head><title>Besondere Fenster</title><script type="text/javascript">function fenster1() {   netscape.security.PrivilegeManager.enablePrivilege(      "UniversalBrowserWrite");   var f = window.open("", "", "width=50,height=50");   netscape.security.PrivilegeManager.disablePrivilege(      "UniversalBrowserWrite");   f.document.open();   f.document.write("50x50");   f.document.close();}function fenster2() {   netscape.security.PrivilegeManager.enablePrivilege(      "UniversalBrowserWrite");   var f = window.open("", "",      "width=150,height=150,alwaysRaised");   netscape.security.PrivilegeManager.disablePrivilege(      "UniversalBrowserWrite");   f.document.open();   f.document.write("immer sichtbar");   f.document.close();}</script></head><body><h1>Besondere Fenster</h1><form><input type="button" value="50x50" /><input type="button" value="immer sichtbar" /></form></body></html>

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 29.4    Das Fenster ist eigentlich kleiner als erlaubt.

Beachten Sie die AnweisungdisablePrivilege("UniversalBrowserWrite").Es ist günstig, dem Skript ein Privileg sofort wieder zu entziehen, nachdem es nicht mehr gebraucht wird. Sonst können auch andere Seiten die besonderen Rechte wahrnehmen. Analog zuenablePrivilege()wird auch hier das entsprechende Privileg als Zeichenkette übergeben.

 <<   zurück
  
 Zum Rheinwerk-Shop
Neuauflage: JavaScript
Neuauflage: JavaScript
bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: jQuery






 jQuery


Zum Rheinwerk-Shop: Einstieg in JavaScript






 Einstieg in JavaScript


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen |Datenschutz |Impressum

Rheinwerk Verlag, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77,service@rheinwerk-verlag.de

Cookie-Einstellungen ändern



[8]ページ先頭

©2009-2025 Movatter.jp