27.2 Code im Frame verstecken  
Frames sind ein beliebtes Mittel, um den Inhalt einer Website zu strukturieren – oder um permanent ein Werbebanner einzublenden. Ein häufig eingesetztes Mittel sind zudem unsichtbare Frames.
Angenommen, Sie haben eine Homepage bei Ihrem ISP und Ihre URL ist http://privat.xy.de/IhrName/. Nun würden Sie gern eine Domain dazu registrieren, beispielsweise http://www.0815.de/. Als alter Schotte nehmen Sie den billigsten Anbieter, der keinerlei Webspace (Speicherplatz) anbietet, sondern nur eine Weiterleitung. Wenn ein Benutzer also http://www.0815.de/ in seinem Browser aufruft, sowll eigentlich http: //privat.xy.de/IhrName im Browser erscheinen. Damit die hässliche URL aber nicht auftaucht, werden unsichtbare Frames eingesetzt. Die Seite http://privatxy.de/IhrName wird zwar aufgerufen, allerdings in einem Frame, was dazu führt, dass die URL nicht in der Adressleiste des Browsers auftaucht. Es muss nur dafür gesorgt werden, dass der Frame möglichst das gesamte Browserfenster einnimmt:
<html>
<head>
<title>www.0815.de</title>
</head>
<frameset rows="100%">
<frame src="http://privat.xy.de/IhrName/" />
</frameset>
</html>
Natürlich können Sie auch ein <iframe>-Element einsetzen.
Diese Methode können Sie auch für Ihre JavaScript-Bemühungen einsetzen. Einige Benutzer greifen nur über Ansicht N Quelltext anzeigen auf den Quelltext zu. Wenn Sie also nach obigem Muster Frames einsetzen, erhält der Benutzer den Quellcode mit <frameset> bzw. <iframe>, aber nicht die eigentliche Seite (mit dem geheimen JavaScript-Code).
Dieses Vorgehen lässt sich aber wie folgt besonders einfach aushebeln:
|
durch das Kontextmenü |
|
im Netscape mit dem Menübefehl Ansicht N Rahmenquelltext bzw. View N Frame Source. |
Zu Beginn des Abschnitts war von »unsichtbaren Frames« die Rede. Damit bezeichnet man im Allgemeinen Frames, die nicht sichtbar sind, also eine Breite/Höhe von einem oder null Pixeln haben. Nachfolgend ein Beispiel:
<html>
<head>
<title>Unsichtbarer Frame</title>
</head>
<frameset rows="100%, *" border="no" frameborder="0">
<frame src="hauptseite.html" />
<frame name="js" src="skript.html" />
</frameset>
</html>
Der untere Frame mit dem name-Attribut "js" ist unsichtbar. In ihm wird die Datei skript.html geladen, die eine Reihe von JavaScript-Funktionen enthalten kann.
Sie können nun vom Hauptframe aus die Funktionen im unsichtbaren Frame aufrufen:
<a href="javascript:if (parent.frames['js']) parent.frames['js'].funktionsname()">Funktion aufrufen
</a>
Beachten Sie die Überprüfung:
if (parent.frames['js'])
Damit können Sie sicherstellen, dass der Frame überhaupt existiert. Wenn nämlich ein Benutzer einen Link im oberen Frame im neuen Fenster öffnet, stehen die Skripten nicht mehr zur Verfügung.
Bei komplexeren Frame-Strukturen müssen Sie die Abfrage selbstredend anpassen, beispielsweise die Frame-Referenz ändern:
if (top.frames['js']){
top.frames['js'].funktionsname()
}
Dieses Vorgehen lässt sich nicht mehr über Menübefehle aushebeln und auch nicht über das Kontextmenü, da Sie nicht in den unsichtbaren Frame klicken können.
Der Benutzer muss hier ein wenig mehr Gehirnschmalz aufwenden. Wenn er das Hauptdokument mit dem <frameset> analysiert, wird er die Referenz auf die Datei skript.html finden. Wenn diese Datei einzeln im Browser aufgerufen wird, kann sie problemlos eingesehen werden.
|