Witam,

Mam serwer na apache, dokładnie to serwer szkolny, ale to nie istotne. Napisałem sobie prościutki plik do listowania katalogu i zrobiłem (przypadkiem) błąd w ścieżce:

  1. <?php
  2.  
  3. $dir = '/';
  4.  
  5. if($_GET['file']) {
  6.  
  7.    include $_GET['file'];
  8.  
  9.    $handle = fopen($_GET['file'], 'a+');
  10.  
  11.    fread($handle, 1024);
  12.  
  13. } else {
  14.  
  15.    $handle = opendir($dir);
  16.  
  17.    while (($file = readdir($handle)) !== false) {
  18.        echo "pl: $fil: t: " . filetype($dir . $file) . "<br /><br />";
  19.    }
  20.    closedir($handle);
  21.  
  22. }
  23.  
  24. ?>


Czyli jest po prostu slash ... i to owocuje ty, że mogę wylistować całą zawartość komputera na którym stoi serwer. I teraz moje pytanie, jak to zabezpieczyć, aby dostęp był tylko do serwera roota, domyślnie C:\Program Files\WebServ\httpd-users\ i C:\Program Files\WebServ\httpd\ ?

Bo niestety ja nic złego nie zrobie, ale osoba chociaż troche znająca się na php napisze to samo co ja, doda unlink bądz rmdir i po sprawie .. czy chociażby na zasadzie fread, otworzy z parametrem r+ i wyczyści jakiś plik i serwer szlag trafi ...

Pozdrawiam
Decha


Edit

Dobra, nie ważne już. Zapomniałem o basedir ...

w php.ini ustawić open_basedir i śmiga tylko na np. Z:\Server