Jörg Reinholz: Typos bereinigt, jetzt auch als Sicherheitsproblem gemeldet

Beitrag lesen

Moin!

<?php
header('Content-type: text/plain');
echo '__DIR__                            : ', __DIR__ , "\n";
echo '$_SERVER["DOCUMENT_ROOT"]          : ', $_SERVER["DOCUMENT_ROOT"] , "\n";
echo 'realpath($_SERVER["DOCUMENT_ROOT"]): ', realpath($_SERVER["DOCUMENT_ROOT"]), "\n";

## file 'include_me.php'

# Exit, wenn in document_root, weil dann Sicherheitsproblem auftreten kann:
if (-1 < strpos(__DIR__, $_SERVER["DOCUMENT_ROOT"]) ) {
    trigger_error('Fatal: '. __FILE__
         . ' darf nicht in oder unterhalb von DOCUMENT_ROOT ('
         . $_SERVER["DOCUMENT_ROOT"] . ') liegen!', E_USER_ERROR);
    exit;
}
?>

$_SERVER["DOCUMENT_ROOT"] zeigt den Pfad, der konfiguriert ist, bei Strato also über den oder die Links, DIR über die tatsächlichen Verzeichnisse im Filesystem. Damit liegt DIR auf Strato-Servern scheinbar stets außerhalb von $_SERVER["DOCUMENT_ROOT"]!

Dieses Skript wird demnach bei Strato niemals die Fehlermeldung ausgeben. Ich hab es jetzt als Sicherheitswarnung an Strato geschickt und hoffe damit die richtige Service-Eskalation zu erreichen, weil der Fehler in vielen Anwendungen unbemerkt bleiben wird.

Jörg Reinholz