Felix Riesterer: Unerklärlicher Fehler im PHP-Programm

Beitrag lesen

Liebe(r) Sara,

bist Du es, TS?

if (@opendir   ($_SERVER['MyAkt_SeitenDir']))  
  {  
   echo PHP_EOL;  
   require_once ($_SERVER['MyAkt_SeitenDir'] . '/meta_ind.php');  
  }  

Na, wenn da mal niemand einen bösen URL crafted, der dazu führt, dass von Dir unbeabsichtigte Dateien in von Dir unbeabsichtigten Verzeichnissen gelesen und ausgegeben werden! War das hier nicht die perfekte Sicherheitslücke...?

Ein Kontextwechsel erfordert immer eine entsprechende Behandlung!!!

Obwohl laut Testausgabe $_SERVER['MyAkt_SeitenDir'] vorhanden ist, kommt die nachfolgende Fehlermeldung:

Warum schreibst Du Sachen in das $_SERVER-Array? Das machen Anfänger, wenn sie keine vernünftige Programmstruktur haben. Auch ich war einmal Anfänger und habe das auch so gemacht, weil das Array überall benutzt werden kann - es ist ja schließlich superglobal. Das ändert aber nichts daran, dass Du das tunlichst bleiben lassen solltest. Stelle Dir nur vor, Du würdest eine fremde Komponente einbinden (z.B. weil Du einen QR-Code oder eine PDF-Datei generieren lassen willst), und die würde sich in $_SERVER umschauen und unerwartete Funde nach Hause telefonieren... Will man nicht!

Unzulässiger Aufruf: require_once (/home/mydom/htdocs/de/zSeite/meta_ind.php)

Also ist entweder das Verzeichnis, oder die Datei, oder beides nicht vorhanden - der Pfad also falsch. Hast Du den überprüft? Insbesondere /home/... kommt mir verdächtig vor, weil DocumentRoot üblicherweise in /var/www/... beheimatet ist.

Liebe Grüße

Felix Riesterer