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

 <<   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
Galileo Computing
ISBN 3-89842-859-1
gp Kapitel 27 Code schützen
  gp 27.1 Quellcode einsehen
    gp 27.1.1 Menübefehle
    gp 27.1.2 Tastenkürzel
    gp 27.1.3 Kontextmenü
    gp 27.1.4 Dateisystem
  gp 27.2 Code im Frame verstecken
  gp 27.3 Mausklick verhindern
  gp 27.4 Code codieren
    gp 27.4.1 Optisch verschleiern
    gp 27.4.2 Inhaltlich verschleiern
  gp 27.5 Dateien auslagern
  gp 27.6 Caching verhindern
  gp 27.7 Code serverseitig generieren


Galileo Computing

27.7 Code serverseitig generieren  toptop

Was wäre, wenn Sie die folgenden zwei Schutzmechanismen kombinieren würden?

gp  Verwendung einer externen .js-Datei
gp  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:

gp  Er wirft einen Blick auf alle Umgebungsvariablen und speichert diese in einem String.
gp  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:

gp  In dem serverseitigen Skript, das die JavaScript-Datei erzeugt, wird die Variable HTTP_REFERER abgefragt.
gp  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/).
gp  Falls diese Werte stimmen, wird JavaScript-Code zurückgegeben, ansonsten nichts (oder eine Fehlermeldung).

Abbildung
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:

gp  Sie werden im Browser-Cache fündig (wenn der Browser die Cache-Anweisung mal wieder ignoriert hat).
gp  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
  
  Zum Katalog
Zum Katalog: JavaScript und AJAX
JavaScript und AJAX
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: JavaScript und AJAX - Das Video-Training






 JavaScript und AJAX -
 Das Video-Training


Zum Katalog: Webseiten programmieren und gestalten






 Webseiten
 programmieren
 und gestalten


Zum Katalog: XHTML, HTML und CSS






 XHTML, HTML und CSS


Zum Katalog: CSS-Praxis






 CSS-Praxis


Zum Katalog: AJAX






 AJAX


Zum Katalog: PHP 5 und MySQL 5






 PHP 5 und MySQL 5


Zum Katalog: TYPO3 4.0






 TYPO3 4.0


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




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