Webhosting:URL-Wrapper (allow url fopen) in PHP aktivieren: Unterschied zwischen den Versionen

Aus manitu Wiki
Zur Navigation springen Zur Suche springen
Zeile 22: Zeile 22:
 
<pre>$hFile = fopen('http://www.anderedomain.de/test.html');</pre>
 
<pre>$hFile = fopen('http://www.anderedomain.de/test.html');</pre>
  
Dies alleine birgt noch kein Sicherheitsrisiko in sich. Viele unsauber programmierte Skripte aber übernehmen ungeprüfte Formular-Daten direkt in den Aufruf z.B. von <code>fopen()</code>. Ein Skript mit dem Inhalt
+
Dies alleine birgt noch kein Sicherheitsrisiko in sich. Viele unsauber programmierte Skripte aber übernehmen ungeprüfte Formular-Daten direkt in den Aufruf z.B. von <code>fopen()</code>. Ein Skript mit dem Inhalt (und ohne weitere Validierung von <code>$cmd</code> in Verbindung mit ''RegisterGlobals'' in PHP)
  
 
<pre>include($cmd);</pre>
 
<pre>include($cmd);</pre>

Version vom 28. März 2012, 07:16 Uhr

Diese Anleitung zeigt Ihnen, wie Sie in Ihrem Webhosting-Paket die URL-Wrapper in PHP, z.B. für fopen(), include() oder require(), aktivieren.

Hinweise

Diese Anleitung geht davon aus, dass Sie ein Webhosting-Paket bei uns haben.

Sicherheitshinweis

Die URL-Wrapper in PHP sind aus Sicherheitsgründen standardmäßig deaktiviert. Sie sollten diese nur aktivieren,

  • wenn Sie diese Funktionalität zwingend benötigend und nicht anderweitig abbilden können
  • wenn Sie PHP-Anwendungen einsetzen,
    • die aus vertrauenswürdigen Quellen stammen
    • die regelmäßig gewartet und aktualisiert werden
  • wenn Sie sich sicher sind, welches Sicherheitsrisiko Sie damit eingehen

Wichtig: Sie als Betreiber Ihres Webhosting-Pakets sind für alles, was durch Sie direkt oder durch die von Ihnen eingesetzten Systeme oder Skripte verursacht wird, verantwortlich, auch wenn dies durch Dritte und/oder ohne Ihr Wissen geschieht. Durch die Verwendung von URL-Wrappern in PHP setzen Sie sich einem erhöhten Sicherheitsrisiko aus. Sofern Sie diese reaktivieren, auch nur teilweise, übernehmen Sie die volle Verantwortung für alle dadurch entstehenden Schäden und Folgeschäden. Sofern Sie sich der Höhe und des Umfangs des Risikos nicht bewusst sind, lassen Sie die Funktionalität bitte deaktiviert.

Warum die URL-Wrapper in PHP ein Sicherheitsrisiko sind

Ursprünglich waren die Funktionen fopen(), include() oder require() etc. dazu gedacht, lokal existierende Dateien in PHP einzubinden bzw. zu öffnen. Im Laufe der Zeit wurde jedoch der Wunsch seitens der Programmierer groß, auch http://- und ftp://-Streams ohne größeren Aufwand verwenden zu können. Dies kann z.B. so aussehen

$hFile = fopen('http://www.anderedomain.de/test.html');

Dies alleine birgt noch kein Sicherheitsrisiko in sich. Viele unsauber programmierte Skripte aber übernehmen ungeprüfte Formular-Daten direkt in den Aufruf z.B. von fopen(). Ein Skript mit dem Inhalt (und ohne weitere Validierung von $cmd in Verbindung mit RegisterGlobals in PHP)

include($cmd);

ermöglicht es beliebigen Dritten, Code an Ihre PHP-Skripte zu übergeben, indem er den Wert der Variable cmd geschickt wählt, und dass er damit Schaden in Ihrem Namen anrichten kann, der unter Ihre Verantwortung fällt.

Aus Sicherheitsgründen ist die Verwendung der URL-Wrapper standardmäßig zu Ihrer eigenen Sicherheit deaktiviert, eine Verwendung führt zu einer Fehlermeldung.

Anleitung

Sofern Sie auf die URL-Wrapper angewiesen sind, können Sie diese manuell für einzelne Skripte und/oder Verzeichnisse reaktivieren. Es gibt dazu zwei Möglichkeiten.

via .htaccess-Datei

Erstellen Sie eine Textdatei namens .htaccess mit folgender Anweisung:

php_flag allow_url_fopen on

im PHP-Skript

Sie können die URL-Wrapper in jedem PHP-Skript jederzeit über den Befehl

ini_set('allow_url_fopen', '1');

aktivieren und über

ini_set('allow_url_fopen', '0');

wieder deaktivieren.