Thorsten Steffen: Pfadangaben in Variablen mit einem Link übergeben - unsicher?

Beitrag lesen

hio,

Beispielsweise so:
http://localhost/dirk/index.php?verweis=./altb_energ/balkon.php

Was genau kann ein "unbefugter" jetzt mit dieser Information anfangen, wenn er möchte?

er kann versuchen auf andere Dateien des Dateisystems zugreifen, indem er einen beliebigen Pfad angibt, was dabei herauskommt hängt von deinem Skript ab. z.b. ../admin/.htaccess und ../../password.txt

Wie kann ich das sonst noch lösen?

Am besten ist es dafür zu sorgen, das alle Zugriffe nur auf einem fest definiertem Verzeichnis herauskommen und so ein Benutzer keine Chance hat auf einen Pfad seiner Wahl zu gelangen.

z.b.
anstatt ?verweis=./altb_energ/balkon.php
?verweis=balkon.php

wobei das .php hier noch nicht der renner ist, weil du damit die möglichkeit gibst die Dateieinung einzustellen, was heisst man könnte zunächstmal auf jede beliebige Date des Verzeichnisses zugreifen.

in deinem skript könnte das dann so aussehen.

<?php

$verweis = (isset($_GET["verweis"])) ? basename($_GET["verweis"]) : "";

// mit basename(); stellst du sicher, das keinerlei Pfadangabe enthalten ist, und so keine Zugriff auf andere Pfade möglich ist.

if (file_exists("$verweis.php"))
  ...

else

....

gl & hf

Thorsten