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
Download: - ZIP, ca. 9,2 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> / JavaScript und AJAX | vor >>
JavaScript und AJAX von Christian Wenz Das umfassende Handbuch
JavaScript und AJAX 839 S., mit DVD, 39,90 Euro Galileo Computing ISBN 3-89842-859-1 |
| Kapitel 27 Code schützen
|  | 27.1 Quellcode einsehen
|  |  | 27.1.1 Menübefehle
|  |  | 27.1.2 Tastenkürzel
|  |  | 27.1.3 Kontextmenü
|  |  | 27.1.4 Dateisystem
|  | 27.2 Code im Frame verstecken
|  | 27.3 Mausklick verhindern
|  | 27.4 Code codieren
|  |  | 27.4.1 Optisch verschleiern
|  |  | 27.4.2 Inhaltlich verschleiern
|  | 27.5 Dateien auslagern
|  | 27.6 Caching verhindern
|  | 27.7 Code serverseitig generieren
## 27.7 Code serverseitig generieren Was wäre, wenn Sie die folgenden zwei Schutzmechanismen kombinieren würden?
| Verwendung einer externen .js-Datei
| Verhinderung des Cachings der Datei
Dann gäbe es nur noch eine Möglichkeit, den Schutz zu knacken: durch die direkte Eingabe der URL in die Adressleiste des Browsers. Um hierfür eine entsprechende Strategie zu entwickeln, benötigen wir zwei Testdateien. Die erste ist eine (fast leere) HTML-Datei:
    <html>
    <head>
    <script type="text/javascript" src="js.php"></script>
    </head>
    <body>
    </body>
    </html>
Die Datei js.php ist – wie Sie sofort erkennen – ein PHP-Skript, das JavaScript-Code ausgeben muss. Damit das folgende Beispiel auch funktioniert, muss bei Ihnen natürlich PHP korrekt installiert sein. Der PHP-Code macht nun Folgendes:
| Er wirft einen Blick auf alle Umgebungsvariablen und speichert diese in einem String.
| Dieser String wird mit einer JavaScript-alert()-Anweisung ausgegeben.
Mehr zur Interaktion von serverseitigen und clientseitigen Mitteln finden Sie in Kapitel 25.
    <?php
    $x = "";
    foreach ($_SERVER as $key => $value) {
       if (is_string($value)) {
          $value = htmlspecialchars($value);
       }
       $x .= "Schlüssel: $key; Wert: $value\\n";
    }
    $x = str_replace("\n", '', $x);
    echo("alert('$x');");
    ?>
Rufen Sie nun die Datei js.html in Ihrem Browser auf. Wegen der serverseitigen Mittel dürfen Sie die Datei nicht über das Dateisystem starten (also nicht C:\...\js.html aufrufen), sondern müssen über den Server gehen (z. B. http://localhost/js.html). Nach kurzer Zeit erscheint ein Warnfenster, das alle Servervariablen ausgibt. Dabei gibt es zwischen den einzelnen Browsern leider Unterschiede. Der Internet Explorer setzt nämlich die Variable HTTP_REFERER auf die HTML-Seite, in der die .js-Datei eingebaut worden ist, auch moderne Mozilla-Browser. Aber man kann sich nicht bei allen Browsern darauf verlassen (einige bieten an, dass der Referer nicht geschickt wird), weswegen das nun folgende Vorgehen nur bedingt funktioniert:
| In dem serverseitigen Skript, das die JavaScript-Datei erzeugt, wird die Variable HTTP_REFERER abgefragt.
| In dieser wird nachgeschaut, welche HTML-Seite das Skript aufruft. Die Adresse dieser HTML-Seite muss dann den korrekten Servernamen enthalten (beispielsweise http://www.xy.de/ oder http://10.11.12.13/).
| Falls diese Werte stimmen, wird JavaScript-Code zurückgegeben, ansonsten nichts (oder eine Fehlermeldung).
Hier klicken, um das Bild zu Vergrößern Abbildung 27.8 Der Internet Explorer setzt HTTP_REFERER. Das folgende PHP-Skript nimmt die erforderliche Überprüfung vor:
    <?php
    header('Pragma: no-cache');
    $r = $_SERVER['HTTP_REFERER'];
    if (strpos($r, 'http://www.xy.de/') == 0 ||
        strpos($r, 'http://10.11.12.13/') == 0) {
       echo("alert('Alles ok!');");
    }
Sie müssen dann nur noch das Skript entsprechend in den HTML-Code einbauen:
    <script type="text/javascript"
            src="js-servercheck.php"></script>
Bedenken Sie aber, dass dieses Verfahren nur mit dem Internet Explorer funktioniert; Benutzer anderer Browser sehen in die Röhre. Dafür funktioniert es vergleichsweise zuverlässig. Es gibt nur zwei Möglichkeiten, auf den Code zuzugreifen:
| Sie werden im Browser-Cache fündig (wenn der Browser die Cache-Anweisung mal wieder ignoriert hat).
| Sie verwenden ein spezielles Programm, das die Angabe des HTTP-Referers fälscht.
Sie sehen also: Mit ein wenig Aufwand können Sie zumindest ein wenig Schutz für Ihren Code erreichen. Hundertprozentige Sicherheit ist aber nicht zu gewährleisten. Aus diesem Grund sollten Sie in Erwägung ziehen, Ihre Energien für die Programmierung von mehr Funktionalität zu verwenden und nicht darauf, Ihren Code (ergebnislos) zu schützen. 1 Wenn Sie jeweils 13 Zeichen weitergehen, haben Sie das ROT13-Verfahren, das einige Mail-Clients zur Verschlüsselung anbieten. Da das Alphabet 26 Zeichen hat, ist es egal, ob Sie 13 Zeichen nach vorn oder nach hinten gehen.
<< zurück | <top> | vor >>
Zum Katalog
JavaScript und AJAX bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchtipps
| JavaScript und AJAX - Das Video-Training
| Webseiten programmieren und gestalten
| XHTML, HTML und CSS
| CSS-Praxis
| AJAX
| PHP 5 und MySQL 5
| TYPO3 4.0
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press 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.

[Galileo Computing]
Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de